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

kol*_*811 10 python numpy pandas

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

df.rename(columns = list_of_names, inplace=True)
Run Code Online (Sandbox Code Playgroud)

但是我每次都收到一个类型错误,并显示一条错误消息" list object is callable ".我想知道为什么会这样?我该怎么做才能解决这个问题?谢谢您的帮助.

Pra*_*ati 24

你可以用

df.columns = ['Leader', 'Time', 'Score']
Run Code Online (Sandbox Code Playgroud)


WeN*_*Ben 8

如果您需要renamel您的姓名列表需要更改为)

df.rename(columns=dict(zip(df.columns,l)))
Run Code Online (Sandbox Code Playgroud)


tdy*_*tdy 7

set_axis

要设置列名称,请set_axis使用axis=1or axis='columns'

df = df.set_axis(list_of_names, axis=1)
Run Code Online (Sandbox Code Playgroud)

请注意,默认axis=0设置索引名称。


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

接受的答案很好并且经常使用,但set_axis有一些优点:

  1. set_axis允许方法链接:

    df.some_method().set_axis(list_of_names, axis=1).another_method()
    
    Run Code Online (Sandbox Code Playgroud)

    对比:

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


JGC*_*JGC 5

只需更新列属性:

df.columns = list_of_names
Run Code Online (Sandbox Code Playgroud)