【问题标题】:How to filter missing data rows using python如何使用python过滤丢失的数据行
【发布时间】:2020-05-21 07:55:37
【问题描述】:

我有一个数据框 df,其中一个名为 mort_acc 的功能缺少数据。我想过滤掉那些包含mort_acc 缺失数据的行,我使用了以下方式

df[df['mort_acc'].apply(lambda x:x == " ")]

没有用。我得到了输出0。所以我使用了下面的lambda方式

df[df['mort_acc'].apply(lambda x:len(x)<0)]

它也不起作用,这次出现错误object of type 'float' has no len()

所以我尝试了这种方式

df[df['mort_acc'].apply(lambda x:x == NaN)]

错误再次发生name 'NaN' is not defined

有人知道怎么做吗?

【问题讨论】:

  • 只使用 np.nan
  • python 中没有数据类型为 NaN 使用 pd.isna() 检查它是否为 nan
  • 如果没有示例,我们将无法为您提供适当的帮助。 (编辑:嗯,显然这次回答者猜对了。)请阅读并申请How to make good reproducible pandas examples
  • 我认为没有必要为此举一个例子。这个问题很清楚,得到了很多答案。我什至给出了我尝试过的代码。无论如何,如果你投反对票也没关系。

标签: python pandas lambda missing-data


【解决方案1】:
bad_values_row_mask = df['mort_acc'].isna()
df[bad_values_row_mask]

听起来像你想要的,我猜

【讨论】:

  • 哦,是的……没错。 isna 做到这一点。但我只是好奇为什么lambda x:x == " " 不起作用?
  • 因为numpy.nan != " " ...你可以做到x == numpy.nan,但我认为is_na更干净
  • (另外,numpy.nan != numpy.nan
【解决方案2】:

python 中没有 NaN 数据类型,使用 pd.isna() 检查它是否为 nan。

df[df['mort_acc'].apply(lambda x:pd.isna(x))]

【讨论】:

    【解决方案3】:

    这将为您提供列值具有 NaN 值的行。

    df[df.mort_acc.isnull()]
    

    【讨论】:

      猜你喜欢
      • 2021-07-27
      • 2018-03-04
      • 1970-01-01
      • 2019-10-07
      • 2020-10-03
      • 1970-01-01
      • 2015-10-25
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多