numpy 在panda Dataframe 中检查“无”

dxxyhpgq  于 2022-12-04  发布在  其他
关注(0)|答案(3)|浏览(146)

我想在 Dataframe 中找到“无”的位置。

pd.DataFrame([None,np.nan]).isnull()
OUT: 
      0
0  True
1  True

isnull()会找到numpy Nan和None值。
我只想要None值,而不是numpy Nan。有没有更简单的方法来实现这一点,而不需要遍历 Dataframe ?
编辑:阅读完评论后,我意识到我的数据框架中也包含字符串,所以None没有被强制为numpy Nan。所以Pisdom给出的答案是有效的。

ttp71kqs

ttp71kqs1#

如果要获取每一行的True/False,可以使用以下代码。下面是一个示例,作为以下DataFrame的结果:

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==isNone

>>> 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

可用:x1个月6个月1个月x1个月7个月1个月x1个月8个月

>>> df[0].values == None
array([ True, False])

不可用:is==

>>> df[0] is None
False

>>> df[0] == None
0    False
1    False
Name: 0, dtype: bool

不可用:一个月11个月1x一个月12个月1x一个月13个月1x

>>> df[0].values is None
False

如何检查np.nan

可用:x1米15英寸

>>> 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
bqjvbblv

bqjvbblv2#

您可以将applymaplambda一起使用,以检查element is None是否如下所示:(构造了一个不同的示例,与原始示例一样,None被强制为np.nan,因为数据类型是float,您将需要一个object类型列来按原样保存None,或者如@Evert所注解的那样,NoneNaN在数字类型列中无法区分):

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
hfsqlsce

hfsqlsce3#

问:如何检查DataFrame / Series中的None

A:isna可以工作,但也会捕获nan。两个建议:

1.使用x.isna()并用nan替换none
1.如果你真的关心Nonex.applymap(type) == type(None)
我更喜欢比较类型,因为例如nan == nan是假的。在我的例子中,None s是无意中出现的,所以x[x.isna()] = nan解决了这个问题。

示例:

x = pd.DataFrame([12, False, 0, nan, None]).T
第一个

相关问题