我试图从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版本。
为什么文档中的这么简单的函数会抛出错误?
答案 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!