2015-02-09 60 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