2014-03-18 136 views
7

這一直使我瘋狂的最後一個小時。我可以得出一個柱狀圖,當我使用:熊貓濾波數據幀直方圖

hist(df.GVW, bins=50, range=(0,200)) 

我用下面的時候我需要過濾數據框對於給定條件的一列,例如:

df[df.TYPE=='SU4'] 

到目前爲止,一切正常。當我嘗試獲取此過濾數據的直方圖時,出現一個關鍵錯誤:KeyError: 0L。我使用以下的過濾數據直方圖:

hist(df[df.TYPE=='SU4'].GVW, bins=50, range=(0,200)) 

是否有語法錯誤的地方?謝謝您的幫助!

+1

考慮使用系列方法hist而不是...無論使用哪一個(?)。我懷疑使用值將工作,即'df [df.TYPE =='SU4']。GVW.values' –

+0

@AndyHayden啊,同時發佈它。你應該把答案作爲答案:-) – joris

+0

@AndyHayden它在我使用values屬性時工作。儘管如此,我希望它沒有這個工作。那麼,不好inisition :) – marillion

回答

10

也許嘗試使用.values屬性(該返回數據作爲numpy的陣列),所以:

hist(df[df.TYPE=='SU4'].GVW.values, bins=50, range=(0,200)) 

我認爲這不工作的原因是因爲matplotlib hist方法試圖訪問第一0 - 輸入的索引元素。但由於該系列產品採用了整數索引標籤,而不是位置,這給出了一個切片系列的一個關鍵錯誤(如第一個元素不會有指數0了)


事實上,作爲@AndyHayden說,你也可以使用熊貓hist方法:

df[df.TYPE=='SU4'].GVW.hist(bins=50) 
+0

終於看到我的屏幕上的直方圖:)是的,這個工程。不知道爲什麼它沒有'.values'屬性不起作用。它適用於未被屏蔽的df。奇怪...... – marillion

+0

增加了一個可能的原因,但不完全確定。出於這個原因,爲了避免這種問題,有時可能會更好或使用熊貓繪圖方法,或使用'.values'屬性。 – joris

+0

這是關於原因的一個線索:https://github.com/matplotlib/matplotlib/issues/2775;將它稱爲matplotlib與pandas的API不兼容性 – Jeff

4

我有一個類似的問題,繪製數據幀我使用查詢得到。我發現如果在派生框架之後,我在派生的框架上使用了reset_index()函數,它解決了問題。

+0

這就是它,謝謝! –

+0

這幫助了我 – StationaryTraveller