根据列索引重命名Dataframe列

abe*_*ger 9 python pandas

是否有内置函数来通过索引重命名pandas数据帧?

我以为我知道列标题的名称,但事实证明第二列中有一些十六进制字符.根据我接收数据的方式,将来可能会遇到第2列的这个问题,因此我无法将这些特定的十六进制字符硬编码到dataframe.rename()调用中.

是否存在一个名为rename_col_by_index()的函数,我无法找到它?

例如:

>>> df = pd.DataFrame({'a':[1,2], 'b':[3,4]})
>>> df.rename_col_by_index(1, 'new_name')
>>> df
   a  new_name
0  1         3
1  2         4
Run Code Online (Sandbox Code Playgroud)

Max*_*axU 18

更新:感谢@Vincenzzzochi

In [138]: df.rename(columns={df.columns[1]: 'new'})
Out[138]:
   a  new  c
0  1    3  5
1  2    4  6

In [140]: df
Out[140]:
   a  b  c
0  1  3  5
1  2  4  6
Run Code Online (Sandbox Code Playgroud)

或者更灵活一点:

In [141]: mapping = {df.columns[0]:'new0', df.columns[1]: 'new1'}

In [142]: df.rename(columns=mapping)
Out[142]:
   new0  new1  c
0     1     3  5
1     2     4  6
Run Code Online (Sandbox Code Playgroud)


tao*_*k A 17

你可以简单地使用

df.columns.values[index] = "New name"
Run Code Online (Sandbox Code Playgroud)

或用新的名称替换所有现有名称

df.columns = ["col1", "col2"]
Run Code Online (Sandbox Code Playgroud)

  • `df.columns.values[index]` 使我的 jupyter 笔记本崩溃。答案是我的MaxU似乎更好。 (2认同)