@@ -5174,6 +5174,50 @@ def test_partition_inputs(self):
5174
5174
pcolinfo = pcolinfo .drop ('ID' , errors = 'ignore' ).drop ('Label' , errors = 'ignore' )
5175
5175
self .assertTablesEqual (colinfo [['Two' , 'Model' , 'One' , 'MSRP' ]], pcolinfo )
5176
5176
5177
+ def test_rename (self ):
5178
+ # Pull in CASTable and Pandas Dataframe
5179
+ tbl = self .table
5180
+ df = self .get_cars_df ()
5181
+
5182
+ # Rename by name:
5183
+ makeCol = tbl ['Make' ]
5184
+ self .assertTrue (any (col in 'Make' for col in list (tbl .columns )))
5185
+ tbl .rename ({'Make' : 'Manufacturer' })
5186
+ # We use inplace=True as that's what CASTable.rename is doing
5187
+ df .rename (columns = {'Make' : 'Manufacturer' }, inplace = True )
5188
+ # No column named "Make" and a column named "Manufacturer"
5189
+ self .assertFalse (any (col in 'Make' for col in list (tbl .columns )))
5190
+ self .assertTrue (any (col in 'Manufacturer' for col in list (tbl .columns )))
5191
+ # Shouldn't be a "new" column, just 'Make' renamed
5192
+ self .assertEqual (makeCol , tbl ['Manufacturer' ])
5193
+ # Shoud be same as pandas
5194
+ self .assertTablesEqual (tbl , df )
5195
+
5196
+ # Rename by function:
5197
+ # Column Manufacturer -> Manufacturer_0
5198
+ tbl .rename (lambda col : col + "_0" )
5199
+ df .rename (columns = lambda col : col + "_0" , inplace = True )
5200
+ for col in list (tbl .columns ):
5201
+ # Last two characters should be _0 for each col
5202
+ self .assertEqual (col [- 2 :], "_0" )
5203
+ self .assertTablesEqual (tbl , df )
5204
+
5205
+ # Rename by name for col that doesn't exist
5206
+ # errors='ignore'
5207
+ originalCols = list (copy .deepcopy (tbl .columns ))
5208
+ # This column doesn't exist, so it'll just ignore it
5209
+ tbl .rename ({'nope' : 'nuh uh' })
5210
+ df .rename (columns = {'nope' : 'nuh uh' }, inplace = True )
5211
+ self .assertFalse (any (col in 'nope' for col in list (tbl .columns )))
5212
+ self .assertListEqual (originalCols , list (tbl .columns ))
5213
+ self .assertTablesEqual (tbl , df )
5214
+
5215
+ # Rename by name for col that doesn't exist
5216
+ # errors='raise'
5217
+ with self .assertRaises (KeyError ):
5218
+ # This column doesn't exist and errors='raise', it'll raise an exception
5219
+ tbl .rename (tbl .rename ({'nope' : 'nuh uh' }, errors = 'raise' ))
5220
+
5177
5221
def test_reset_index (self ):
5178
5222
tbl = self .table
5179
5223
0 commit comments