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

时间:2016-12-01 17:59:28

标签: python pandas 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版本。

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

2 个答案:

答案 0 :(得分:0)

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

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

rename是一个章鱼方法,根据输入做了不同的事情(重命名整个系列,重命名索引值,......)。 &#34;重命名系列&#34;但是,可以通过分配其name属性来直接重新调用。

请注意评论:实际工作的不是命名Series,而是分配给DataFrame

df['test'] = s

此外,从另一篇文章中可以看出,对装置进行彻底的转动是另一种成功的方法。

答案 1 :(得分:0)

版本困难是由于我对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!