pandas.isnull()不适用于十进制类型?

时间:2016-06-20 12:13:19

标签: python-3.x pandas decimal

我是否遗漏了某些内容,或者我们遇到了pandas.isnull()的问题?

>>> import pandas as pd
>>> import decimal
>>> d = decimal.Decimal('NaN')
>>> d
Decimal('NaN')
>>> pd.isnull(d)
False
>>> f = float('NaN')
>>> f
nan
>>> pd.isnull(f)
True
>>> pd.isnull(float(d))
True

问题是我的数据框中包含decimal.Decimal值,而df.dropna()因此没有删除NaN ......

1 个答案:

答案 0 :(得分:4)

是的,不支持此功能,您可以使用NaN不相等的属性,该属性仍适用于Decimal类型:

In [20]:
import pandas as pd
import decimal
d = decimal.Decimal('NaN')
df = pd.DataFrame({'a':[d]})
df

Out[20]:
     a
0  NaN

In [21]:    
df['a'].apply(lambda x: x != x)

Out[21]:
0    True
Name: a, dtype: bool

所以你可以这样做:

In [26]:
df = pd.DataFrame({'a':[d,1,2,3]})
df[df['a'].apply(lambda x: x == x)]

Out[26]:
   a
1  1
2  2
3  3