【问题标题】:pandas dataframe return boolean if the column value is NaN如果列值为 NaN,则熊猫数据框返回布尔值
【发布时间】:2019-10-07 13:10:25
【问题描述】:

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

我试过了

pandas_df['col1'].isnull()

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

【问题讨论】:

  • @jezrael,预期的输出只是布尔值 True 或 False
  • 所以pandas_df.col1.isnull().any() ??

标签: pandas


【解决方案1】:

IIUC 你需要.any() 来检查是否有空值:

pandas_df.col1.isnull().any()

【讨论】:

  • 还有一个选项是pandas_df.col1.hasnans,但不推荐。 any() 更可靠
【解决方案2】:

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

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

如果需要测试所有值是否都是NaNs,请使用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

【讨论】:

    【解决方案3】:

    您也可以使用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() 将返回 True 缺失值(NaNNaTNone 三重奏):

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

    【讨论】:

      猜你喜欢
      • 2014-06-18
      • 1970-01-01
      • 2021-06-06
      • 2014-02-07
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多