我想找到数据框中的None所在位置。
pd.DataFrame([None,np.nan]).isnull()
OUT:
0
0 True
1 True
isnull()函数可用于查找numpy Nan和None值。
我只想要None值,而不是numpy Nan。有没有更简单的方法可以避免遍历整个数据框架?
编辑: 阅读评论后,我意识到我的工作中的数据框也包括字符串,因此None值没有被强制转换为numpy Nan。因此Pisdom给出的答案是有效的。
df = pd.DataFrame([[None, 3], ["", np.nan]])
df
# 0 1
#0 None 3.0
#1 NaN
None
.isnull()
>>> df[0].isnull()
0 True
1 False
Name: 0, dtype: bool
.apply
==
或者 is
None
>>> df[0].apply(lambda x: x == None)
0 True
1 False
Name: 0, dtype: bool
>>> df[0].apply(lambda x: x is None)
0 True
1 False
Name: 0, dtype: bool
.values
==
None
>>> df[0].values == None
array([ True, False])
is
或 ==
>>> df[0] is None
False
>>> df[0] == None
0 False
1 False
Name: 0, dtype: bool
.values
为
None
>>> df[0].values is None
False
np.nan
.isnull()
>>> df[1].isnull()
0 False
1 True
Name: 1, dtype: bool
np.isnan
>>> np.isnan(df[1])
0 False
1 True
Name: 1, dtype: bool
>>> np.isnan(df[1].values)
array([False, True])
>>> df[1].apply(lambda x: np.isnan(x))
0 False
1 True
Name: 1, dtype: bool
is
或 ==
np.nan
>>> df[1] is np.nan
False
>>> df[1] == np.nan
0 False
1 False
Name: 1, dtype: bool
>>> df[1].values is np.nan
False
>>> df[1].values == np.nan
array([False, False])
>>> df[1].apply(lambda x: x is np.nan)
0 False
1 False
Name: 1, dtype: bool
>>> df[1].apply(lambda x: x == np.nan)
0 False
1 False
Name: 1, dtype: bool
df = pd.DataFrame([[None, 3], ["", np.nan]])
df
# 0 1
#0 None 3.0
#1 NaN
df.applymap(lambda x: x is None)
# 0 1
#0 True False
#1 False False
None
将会变成 NaN
。 - user707650None
只能存在于 object 类型的列中。 - PsidomNone
isna
可以工作,但也会捕捉到nan
。 两个建议:x.isna()
并将none替换为nanNone
:x.applymap(type) == type(None)
我更喜欢比较类型,因为例如nan == nan
是false。 在我的情况下,None
出现了意外,所以x[x.isna()] = nan
解决了问题。
x = pd.DataFrame([12, False, 0, nan, None]).T
x.isna()
0 1 2 3 4
0 False False False True True
x.applymap(type) == type(None)
0 1 2 3 4
0 False False False False True
x
0 1 2 3 4
0 12 False 0 NaN None
x[x.isna()] = nan
0 1 2 3 4
0 12 False 0 NaN NaN
None
视为缺失数据,并将它们(等同于)NaN。即使通过“循环遍历数据框”,您也无法区分None
和NaN
。请参阅有关缺失数据的文档。 - user707650None
。或者,你可以引入一个(布尔)列来指示一个值是None
还是浮点值(包括NaN
);也就是所谓的掩码。 - user707650