如果列值为NaN,则pandas数据框返回布尔值

时间:2019-05-21 07:27:26

标签: pandas

我有多个列的Pandas DataFrame,我想检查特定列的值是否为NaN,如果是,则需要返回布尔值(True或False)。

我尝试过

pandas_df['col1'].isnull()

但是它返回具有索引和布尔值的所有行。

3 个答案:

答案 0 :(得分:2)

对于返回布尔型标量,请使用Series.any-测试每列是否至少有一个NaN(至少一个True):

pandas_df['col1'].isnull().any()

如果需要测试所有的valeus是否为NaN,请使用Series.all

pandas_df['col1'].isnull().all()

pandas_df = pd.DataFrame({'col1':[1,2,np.nan],
                          'col2':[np.nan, np.nan, np.nan]})

print (pandas_df['col1'].isnull().any())
True

print (pandas_df['col2'].isnull().all())
True

答案 1 :(得分:2)

IIUC,您需要.any()检查是否存在任何空值:

pandas_df.col1.isnull().any()

答案 2 :(得分:-1)

您也可以使用isna()。这是identicalisnull()

df.isna()将检测整个数据帧中的缺失值。


   age       born    name        toy
0  5.0        NaT  Alfred       None
1  6.0 1939-05-27  Batman  Batmobile
2  NaN 1940-04-25              Joker

调用df.isna()会在缺少值(三重奏TrueNaNNaT)上返回None

     age   born   name    toy
0  False   True  False   True
1  False  False  False  False
2   True  False  False  False