2015-02-09 59 views
2

我正在處理一些包含缺失數據的csv數據集,這些數據集標記爲Lücke讓大熊貓持久

我導入的數據集如下:

MyData=pd.read_csv('filename.csv',sep=';',skiprows=19,index_col='Date',dayfirst=True,parse_dates=True, na_values='L\xfccke') 

如預期,把樂其到更熟悉NaN的其中一期工程。

望着它的尾巴,在那裏我知道有一個呂凱,我得到以下,符合市場預期:

     level 
Date      
2011-12-28 07:00:00 0.0 
2011-12-29 07:00:00 0.0 
2011-12-30 07:00:00 0.4 
2011-12-31 07:00:00 0.0 
2012-01-01 07:00:00 NaN 

所以根據大熊貓文檔(http://pandas.pydata.org/pandas-docs/stable/missing_data.html#filling-missing-values-fillna)一個簡單的

In [23]: MyData.level.fillna(0) 

應該的技巧。它的

Out [24]: 
Date 
... 
2011-12-29 07:00:00  0.0 
2011-12-30 07:00:00  0.4 
2011-12-31 07:00:00  0.0 
2012-01-01 07:00:00  0.0 
Name: level, Length: 14976 

似乎表明它確實工作。

但繼續,我總是得到AttributeError: max must be larger than min in range parameter.錯誤,試圖用plt.hist繪製直方圖。

所以要檢查,我跑了一個簡單的MyData.tail()MyData.level.tail,他們都讓我

     level 
Date      
2011-12-28 07:00:00 0.0 
2011-12-29 07:00:00 0.0 
2011-12-30 07:00:00 0.4 
2011-12-31 07:00:00 0.0 
2012-01-01 07:00:00 NaN 

哪裏是從何而來?我是否誤解了fillna,並且必須指明它實際上應該真的取代NaN,而不是假裝?

或者說是一個熊貓版本的bug?

回答

3

默認情況下,fillna將返回填充數據框和「就地」就可以不工作,因此你需要做的:

MyData.level = MyData.level.fillna(0) 

或者調用它時,你可以通過inplace=True,它工作在原地,所以:

MyData.level.fillna(0, inplace=True) 
+0

該死的,這太簡單了。謝謝!不知怎的,我還沒有得到它,當某些東西被持久地改變(因此使'不管什麼=任何東西'不需要),當我真的必須這樣做。我首先做的「錯誤」方式的目的是什麼?我似乎無法訪問我在後續步驟中所做的更改,因此我的問題在這裏。 – 2015-02-09 15:13:27