From ff4535c56bb91a61a9fc985c0038251485f35003 Mon Sep 17 00:00:00 2001 From: Palash Tyagi <23239946+Magnus167@users.noreply.github.com> Date: Sun, 22 Jun 2025 05:35:48 +0100 Subject: [PATCH] Implement column renaming in DataFrame, updating both logical names and underlying Frame references. --- src/dataframe/df.rs | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/dataframe/df.rs b/src/dataframe/df.rs index 061be3f..2574844 100644 --- a/src/dataframe/df.rs +++ b/src/dataframe/df.rs @@ -252,9 +252,28 @@ impl DataFrame { old_name ) }); - self.data.insert(new_name.clone(), column); + let new_name_clone = new_name.clone(); + self.data.insert(new_name, column); if let Some(pos) = self.column_names.iter().position(|n| n == old_name) { - self.column_names[pos] = new_name; + self.column_names[pos] = new_name_clone.clone(); + } + + // rename the column in the underlying Frame as well + if let Some(col) = self.data.get_mut(&new_name_clone) { + match col { + DataFrameColumn::F64(frame) => { + frame.rename(old_name, new_name_clone.clone()); + } + DataFrameColumn::I64(frame) => { + frame.rename(old_name, new_name_clone.clone()); + } + DataFrameColumn::String(frame) => { + frame.rename(old_name, new_name_clone.clone()); + } + DataFrameColumn::Bool(frame) => { + frame.rename(old_name, new_name_clone.clone()); + } + } } }