pandas 重命名文档中的示例不适用于 Ubuntu 16.04

Example from pandas rename documentation doesn't work on Ubuntu 16.04

我正在尝试复制 pandas rename documentation 中的示例。

s = pd.Series([1,2,3])
s.rename("test")

哪个会抛出错误

Traceback (most recent call last):   File "<stdin>", line 1, in
<module>   File
"/usr/lib/python2.7/dist-packages/pandas/core/series.py", line 2264,
in rename
    return super(Series, self).rename(index=index, **kwargs)   File "/usr/lib/python2.7/dist-packages/pandas/core/generic.py", line 606,
in rename
    result._data = result._data.rename_axis(f, axis=baxis, copy=copy)   File "/usr/lib/python2.7/dist-packages/pandas/core/internals.py", line
2588, in rename_axis
    obj.set_axis(axis, _transform_index(self.axes[axis], mapper))   File "/usr/lib/python2.7/dist-packages/pandas/core/internals.py", line
4391, in _transform_index
    items = [func(x) for x in index] TypeError: 'str' object is not callable

我是 运行 Ubuntu 16.04.1。我注意到对 python2.7 的引用,所以我确定我已经下载了最新的 pandas 和 python 版本。

为什么文档中这么简单的函数会抛出错误?

当事情不像宣传的那样有效时,这是令人不安的!也许这预示着您需要追踪的重要信息,因为它可能预示着其他问题或不兼容。但是如果你需要这个特殊的东西来工作,有一个简单的解决方法:

s = pd.Series([1,2,3])
s.name = 'test'

rename 有点像章鱼方法,根据输入做不同的事情(重命名整个系列,重命名索引值,...)。然而,"rename the Series" 调用可以通过分配给它的 name 属性 来非常直接地重述。

注意注释:实际起作用的不是命名 Series,而是分配给 DataFrame

df['test'] = s

另外,从另一个 post 看来,对安装进行彻底的旋耕是另一种成功的方法。

版本问题是由于我对 Ubuntu 如何运行 python 版本的误解造成的。在每个人都使用 "pip" 的地方,对于我的情况来说,它意味着 "pip3",而 "python" 意味着 "python3"。

Ubuntu 上的以下步骤解决了我的问题。

sudo apt-get install python3-pip
sudo -H pip3 install pandas

启动时,我需要使用 python3 而不是 python.

python3
import pandas as pd #no errors!