2013-01-15 85 views
0

我有一個數據框df其中有重複的列:(我需要重複的列數據框,這將作爲參數傳遞給matplotlib進行繪圖,所以列名稱和內容可能相同或不同)重複列熊貓數據框切片問題

>>> df 
             PE  RT Ttl_mkv  PE 
STK_ID RPT_Date         
11_STK79 20130115 41.932 2.744 3629.155 41.932 
21_STK58 20130115 14.223 0.048 30302.324 14.223 
22_STK229 20130115 22.436 0.350 15968.313 22.436 
23_STK34 20130115 -63.252 0.663 4168.189 -63.252 

我可以得到由第二欄:df[df.columns[1]]

>>> df[df.columns[1]] 
STK_ID  RPT_Date 
11_STK79 20130115 2.744 
21_STK58 20130115 0.048 
22_STK229 20130115 0.350 
23_STK34 20130115 0.663 

,但如果我想通過df[df.columns[0]]的第一列,它會給:

>>> df[df.columns[0]] 
            PE  PE 
STK_ID RPT_Date     
11_STK79 20130115 41.932 41.932 
21_STK58 20130115 14.223 14.223 
22_STK229 20130115 22.436 22.436 
23_STK34 20130115 -63.252 -63.252 

其中有兩列。這將使我的應用程序的應用程序只需要第一列,但熊貓給第一&第四列!它是故意還是故意設計的?如何繞過這個問題?

我的熊貓版本是0.8.1。

回答

2

我真的不明白爲什麼你需要兩個同名的列,避免它可能是最好的。

但是,爲了回答你的問題,這將只返回 'PE' 列1:

df.T.drop_duplicates().T.PE 

STK_ID  RPT_Date 
11_STK79 20130115 41.932 
21_STK58 20130115 14.223 
22_STK229 20130115 22.436 
23_STK34 20130115 -63.252 
Name: PE 

或:

df.T.ix[0].T 
+0

感謝你的小費。但我認爲「df [df.columns [0]]」返回兩列是設計問題。對於語法告訴熊貓非常清楚,我只想「列[0]」。 – bigbug

+1

我不同意。 df.columns [0]返回第一列的名稱,而不是列本身。你可以用它來創建索引。因此,我把它解釋爲'給我所有列名爲df.columns [0]',所以基本上df ['PE']。 –

+0

我明白了。我應該使用「df.ix [:,0]」,而不是「df [df.columns [0]]」 – bigbug