2016-12-01 68 views
0

我试图复制pandas rename documentation中的示例。来自熊猫重命名文档的示例在Ubuntu上不起作用16.04

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的引用,所以我确定我已经下载了最新的熊猫和python版本。

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

+1

'pd .__ version__'的输出是什么? – ayhan

+0

我目前的熊猫版本是0.17.1 –

+0

更新到熊猫0.19.1并没有解决它。 –

回答

0

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

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

rename有点章鱼的方法,这样做取决于输入(重命名全系列不同的东西,重命名索引值,...)。但是,“重命名系列”调用可以通过分配其name属性进行非常直接的重申。

注意的评论:什么实际工作没有命名Series,但分配给DataFrame

df['test'] = s 

而且,从另一个帖子里安装一个彻底的旋转式耕作是另一个成功的方法出现。

+0

不幸的是,这并不适合我的最终目的,即将Series作为一个列连接到具有唯一列名*的现有数据框*。 .name解决方法由于某种原因保留了原始系列名称。 –

+0

而'df ['test'] = s'没有在'DataFrame'中添加'Series'到你选择的''test''名字?这是添加列的更直接的途径,而不是更改“系列”的名称,这通常是匿名的。 –

+0

这是行得通的;-)我是一个蟒蛇新手,所以这些解决方法的一半是让我失败的方式成功。谢谢你的帮助。 –

0

版本问题是由于我误解Ubuntu运行Python版本而引起的。每个人使用“pip”的地方,意思是“pip3”,而“python”的意思是“python3”。

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

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

在启动,我需要python3而不是蟒蛇推出。

python3 
import pandas as pd #no errors!