如何使用名称列表更改 pandas Dataframe 中的列名称?

问题描述 投票:0回答:6

我一直在尝试使用名称列表更改 pandas 数据框的列名称。正在使用以下代码:

df.rename(columns = list_of_names, inplace=True)

但是我每次都会遇到类型错误,并显示错误消息“列表对象不可调用”。 我想知道为什么会出现这种情况?我能做些什么来解决这个问题? 谢谢您的帮助。

python pandas numpy
6个回答
56
投票

你可以使用

df.columns = ['Leader', 'Time', 'Score']

13
投票

如果您需要

rename
l
是您需要更改的姓名列表)

df.rename(columns=dict(zip(df.columns,l)))

7
投票

set_axis

要设置列名称,请使用

set_axis
axis=1
axis='columns'
:

df = df.set_axis(list_of_names, axis=1)

请注意,默认的

axis=0
设置索引名称。


为什么不直接修改
df.columns
呢?

接受的答案很好并且经常使用,但是

set_axis
有一些优点:

  1. set_axis
    允许方法链接:

    df.some_method().set_axis(list_of_names, axis=1).another_method()
    

    与:

    df = df.some_method()
    df.columns = list_of_names
    df.another_method()
    
  2. set_axis
    理论上应该比直接修改属性提供更好的错误检查,尽管我目前找不到具体的示例。


6
投票

只需更新列属性:

df.columns = list_of_names

1
投票

如果您的列表是:column_list,那么

column_list
['a', 'b', 'c']

原来的

df.columns
['X', 'Y', 'Z']

你只需要:

df.columns = column_list


0
投票

我会检查你的 df 声明。我最近遇到了这个问题,我实际上错误地将变量声明为

df=[]
。我花了一分钟才发现我错误地将其设置为列表/数组而不是数据框。

© www.soinside.com 2019 - 2024. All rights reserved.