Renaming column names in Pandas
--------------------------------------------------
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Puzzling Curiosities
--
Chapters
00:00 Renaming Column Names In Pandas
00:15 Accepted Answer Score 2551
00:28 Answer 2 Score 4609
01:41 Answer 3 Score 521
01:55 Answer 4 Score 276
02:04 Thank you
--
Full question
https://stackoverflow.com/questions/1134...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #pandas #replace #dataframe #rename
#avk47
    Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Puzzling Curiosities
--
Chapters
00:00 Renaming Column Names In Pandas
00:15 Accepted Answer Score 2551
00:28 Answer 2 Score 4609
01:41 Answer 3 Score 521
01:55 Answer 4 Score 276
02:04 Thank you
--
Full question
https://stackoverflow.com/questions/1134...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #pandas #replace #dataframe #rename
#avk47
ANSWER 1
Score 4609
Rename Specific Columns
Use the df.rename() function and refer the columns to be renamed. Not all the columns have to be renamed:
df = df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'})
# Or rename the existing DataFrame (rather than creating a copy) 
df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'}, inplace=True)
Minimal Code Example
df = pd.DataFrame('x', index=range(3), columns=list('abcde'))
df
   a  b  c  d  e
0  x  x  x  x  x
1  x  x  x  x  x
2  x  x  x  x  x
The following methods all work and produce the same output:
df2 = df.rename({'a': 'X', 'b': 'Y'}, axis=1)
df2 = df.rename({'a': 'X', 'b': 'Y'}, axis='columns')
df2 = df.rename(columns={'a': 'X', 'b': 'Y'}) 
df2
   X  Y  c  d  e
0  x  x  x  x  x
1  x  x  x  x  x
2  x  x  x  x  x
Remember to assign the result back, as the modification is not-inplace. Alternatively, specify inplace=True:
df.rename({'a': 'X', 'b': 'Y'}, axis=1, inplace=True)
df
   X  Y  c  d  e
0  x  x  x  x  x
1  x  x  x  x  x
2  x  x  x  x  x
 
You can specify errors='raise' to raise errors if an invalid column-to-rename is specified.
Reassign Column Headers
Use df.set_axis() with axis=1.
df2 = df.set_axis(['V', 'W', 'X', 'Y', 'Z'], axis=1)
df2
   V  W  X  Y  Z
0  x  x  x  x  x
1  x  x  x  x  x
2  x  x  x  x  x
Headers can be assigned directly:
df.columns = ['V', 'W', 'X', 'Y', 'Z']
df
   V  W  X  Y  Z
0  x  x  x  x  x
1  x  x  x  x  x
2  x  x  x  x  x
ACCEPTED ANSWER
Score 2551
Just assign it to the .columns attribute:
>>> df = pd.DataFrame({'$a':[1,2], '$b': [10,20]})
>>> df
   $a  $b
0   1  10
1   2  20
>>> df.columns = ['a', 'b']
>>> df
   a   b
0  1  10
1  2  20
ANSWER 3
Score 521
The rename method can take a function, for example:
In [11]: df.columns
Out[11]: Index([u'$a', u'$b', u'$c', u'$d', u'$e'], dtype=object)
In [12]: df.rename(columns=lambda x: x[1:], inplace=True)
In [13]: df.columns
Out[13]: Index([u'a', u'b', u'c', u'd', u'e'], dtype=object)
ANSWER 4
Score 276
As documented in Working with text data:
df.columns = df.columns.str.replace('$', '')