2015-07-01 34 views
1

我有數據幀df。無法訪問大熊貓數據框中的列

df.columns gives this output 

Index([u'Talk Time\t', u'Hold Time\t', u'Work Time\t', u'Call Type'], dtype='object') 

這裏,列「通話時間」有「\ t」的角色吧,所以,如果我這樣做,我得到

df['Talk Time'] 

Traceback (most recent call last): 

File "<ipython-input-78-f2b7b9f43f59>", line 1, in <module> 
old['Talk Time'] 

File "C:\Users\Admin\Anaconda\lib\site-packages\pandas\core\frame.py", line 1780, in __getitem__ 
return self._getitem_column(key) 

File "C:\Users\Admin\Anaconda\lib\site-packages\pandas\core\frame.py", line 1787, in _getitem_column 
return self._get_item_cache(key) 

File "C:\Users\Admin\Anaconda\lib\site-packages\pandas\core\generic.py", line 1068, in _get_item_cache 
values = self._data.get(item) 

File "C:\Users\Admin\Anaconda\lib\site-packages\pandas\core\internals.py", line 2849, in get 
loc = self.items.get_loc(item) 

File "C:\Users\Admin\Anaconda\lib\site-packages\pandas\core\index.py", line 1402, in get_loc 
return self._engine.get_loc(_values_from_object(key)) 

File "pandas\index.pyx", line 134, in pandas.index.IndexEngine.get_loc (pandas\index.c:3820) 

File "pandas\index.pyx", line 154, in pandas.index.IndexEngine.get_loc (pandas\index.c:3700) 

File "pandas\hashtable.pyx", line 696, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12323) 

File "pandas\hashtable.pyx", line 704, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12274) 

KeyError: 'Talk Time' 

所以我修改列刪除製表符爲錯誤如下:

for n in range(len(df.columns)): 
df.columns.values[n] = df.columns.values[n].rstrip() 

Tab字符得到去除,df.columns給下面的輸出

Index([u'Talk Time', u'Hold Time', u'Work Time', u'Call Type'], dtype='object') 

但是,仍然當我試圖訪問一個列

df['Talk Time'] 

,我看到了同樣的錯誤。爲什麼會發生?

回答

1

主要問題是,您替換了columnsvalue,這是您實際設法執行的操作。但那只是一個別名,因此實際的名字像以前一樣保持着。所以df['Talk Time\t']工作得很好,如果你嘗試過,但顯然這不是你等待的結果。 因此,解決辦法是,你必須改變,而不是df.columnsdf.columns.value

df.columns = [c.rstrip() for c in df.columns] 

這是根據你的需求是什麼工作正常

0

我無法重現你的第二個錯誤,但是,你可以這樣做:

df.columns = [i.rstrip() for i in df.columns] 

也許這將幫助!