【问题标题】:pandas DataFrame.rename unexpected keyword argument "axis" when using mapper使用映射器时,pandas DataFrame.rename 意外的关键字参数“axis”
【发布时间】:2018-05-27 18:09:41
【问题描述】:

按照pandas docs,我尝试了以下内容(逐字逐句地从文档中删除):

df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
df.rename(str.lower, axis='columns')

但我得到了错误

TypeError: rename() 得到了一个意外的关键字参数“axis”

我也试过

df.rename(mapper=str.lower, axis='columns')

然后我得到:

TypeError: rename() 得到了一个意外的关键字参数“mapper”

我查看的是旧版本的文档吗?

【问题讨论】:

  • 可能你有一个旧版本。请参阅此旧文档:pandas.pydata.org/pandas-docs/version/0.20.2/generated/…
  • @koalo 我在'0.20.3'上并且可以复制。编辑:嗯,我已经过时了?这就是本月 Anaconda 附带的内容。
  • 反之亦然。 axis 关键字是在 0.21.1 中引入的,不适用于早期版本。看到这个:pandas.pydata.org/pandas-docs/stable/…
  • 他们在最新版本中彻底修改了重命名 API。您似乎在旧版本的 pandas 上运行 0.21 代码。

标签: python pandas


【解决方案1】:

您可能正在将 python2 与旧版本的 pandas 一起使用。 axis 参数尚未为您实现。你有3个选择。删除axis 参数并明确命名列,如下所示,或者将映射传递给rename(...),或者更新您的python 和pandas 版本。

import pandas as pd  
import numpy as np  
import sys 
print(sys.version) 
print(pd.__version__)

#create a dataframe with two columns named Foo and BAR 
df = pd.DataFrame({" Foo": [1, 2, 3], "BAR ": [4, 5, 6]}) 
print(df)

#rename the columns in the dataframe to strip whitespace and be all lowercase: 
df = df.rename(columns={c:c.strip().lower() for c in df.columns}) 
print(df)

#change the column named foo to moo, and change the column named bar to baz 
df = df.rename(columns={"foo": "moo", "bar": "baz"}) 
print(df) 

哪些打印:

2.7.16 [GCC 4.9.3]
0.16.2
    Foo  BAR 
0     1     4
1     2     5
2     3     6

   foo  bar
0    1    4
1    2    5
2    3    6

   moo  baz
0    1    4
1    2    5
2    3    6

【讨论】:

    【解决方案2】:

    我查看的是旧版本的文档吗?

    不,实际上恰恰相反。您正在查看最新版本(截至目前为0.21)。我很确定你有旧版本的熊猫。

    在旧版本中,一些函数使用axis 来指定索引/列,而其他函数使用index=...columns=...。为了缓解这种情况,开发人员对许多 API 进行了彻底检查,以使它们彼此更加一致。 rename 就是其中之一。

    您拥有的代码在最新版本上运行良好,但不是任何旧版本,因为0.21 中引入了mapperaxis

    作为参考,在旧版本上,以下替代方案都有效 -

    df.columns = df.columns.str.lower()
    

    还有,

    df = df.rename(columns=dict(zip(df.columns, df.columns.str.lower())))
    

    【讨论】:

    • 谢谢,我会在早上尝试更新。有没有办法可以在线查看旧版本的文档?因此,如果我检查我正在运行的版本,如何找到该版本rename 的在线文档?我想我可以查看我在本地拥有的函数的文档字符串。
    • @Dan 在您的终端中,您可以使用 pd.__version__ 找到您的版本。一旦你得到这个,去pandas.pydata.org/pandas-docs/stable/index.html并导航到你的版本。然后在侧窗格中,搜索您要查看的函数文档。
    猜你喜欢
    • 2019-09-17
    • 1970-01-01
    • 2021-07-16
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 2019-11-02
    • 2021-02-15
    相关资源
    最近更新 更多