在 Pandas 中重命名列名

新手上路,请多包涵

我想将 Pandas DataFrame 的列标签从

['$a', '$b', '$c', '$d', '$e']

['a', 'b', 'c', 'd', 'e']

原文由 user1504276 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

只需将其分配给 .columns 属性:

 >>> 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

原文由 eumiro 发布,翻译遵循 CC BY-SA 4.0 许可协议

重命名特定列

使用 df.rename() 函数并引用要重命名的列。并非所有列都必须重命名:

 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)

最小代码示例

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

以下方法都有效并产生相同的输出:

 df2 = df.rename({'a': 'X', 'b': 'Y'}, axis=1)  # new method
df2 = df.rename({'a': 'X', 'b': 'Y'}, axis='columns')
df2 = df.rename(columns={'a': 'X', 'b': 'Y'})  # old method

df2

   X  Y  c  d  e
0  x  x  x  x  x
1  x  x  x  x  x
2  x  x  x  x  x

请记住将结果分配回去,因为修改不是就地的。或者,指定 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


从 v0.25 开始,您还可以指定 errors='raise' 以在指定了无效的要重命名列时引发错误。请参阅 v0.25 rename() 文档


重新分配列标题

df.set_axis()axis=1inplace=False 一起使用(返回副本)。

 df2 = df.set_axis(['V', 'W', 'X', 'Y', 'Z'], axis=1, inplace=False)
df2

   V  W  X  Y  Z
0  x  x  x  x  x
1  x  x  x  x  x
2  x  x  x  x  x

这将返回一个副本,但您可以通过设置 inplace=True 就地修改 DataFrame(这是 <=0.24 版本的默认行为,但将来可能会更改)。

您还可以直接分配标头:

 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

原文由 lexual 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题