2016-12-01 66 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!