2014-02-26 71 views
5

早上好,當存在Unicode值時計算NaNs

我有一個包含多個系列的pandas數據幀。對於數據框中的給定序列,數據類型是unicode,NaN和int/float。我想確定系列中的NaN數量,但不能使用內置的numpy.isnan方法,因爲它無法安全地將unicode數據轉換爲它可以解釋的格式。我提出了一個解決方法,但我想知道是否有更好/更蟒蛇的方式來完成這項任務。

由於提前, 邁爾斯

import pandas as pd 
import numpy as np 

test = pd.Series(data = [NaN, 2, u'string']) 
np.isnan(test).sum() 
#Error 

#Work around 
test2 = [x for x in test if not(isinstance(x, unicode))] 
numNaNs = np.isnan(test2).sum() 

回答

6

使用pandas.isnull

In [24]: test = pd.Series(data = [NaN, 2, u'string']) 

In [25]: pd.isnull(test) 
Out[25]: 
0  True 
1 False 
2 False 
dtype: bool 

不過請注意,這pd.isnull也把NoneTrue

In [28]: pd.isnull([NaN, 2, u'string', None]) 
Out[28]: array([ True, False, False, True], dtype=bool) 
+0

謝謝,這正是我在找什麼河我非常感謝迅速和完整的迴應。 (等待10分鐘後,我會接受你的回答) –