【问题标题】:pandas filter by multiple columns NULLpandas 按多列过滤 NULL
【发布时间】:2019-02-21 19:49:51
【问题描述】:

我有一个 pandas 数据框,例如:

df = pd.DataFrame({'Last_Name': ['Smith', None, 'Brown'], 
                   'First_Name': ['John', None, 'Bill'],
                   'Age': [35, 45, None]})

并且可以使用手动过滤它:

df[df.Last_Name.isnull() & df.First_Name.isnull()]

但这很烦人,因为我需要为每个列/条件编写大量重复代码。如果有大量列,它是不可维护的。是否可以编写一个为我生成此 python 代码的函数?

一些背景: 我的 pandas 数据框基于初始的基于 SQL 的多维聚合(分组集)https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-multi-dimensional-aggregation.html,因此某些不同的列总是为 NULL。现在,我想有效地选择这些不同的组并在 pandas 中分别分析它们。

【问题讨论】:

    标签: python pandas metaprogramming


    【解决方案1】:

    使用filter:

    df[df.filter(like='_Name').isna().all(1)]
    
      Last_Name First_Name   Age
    1      None       None  45.0
    

    或者,如果您想要更大的灵活性,请指定列名列表。

    cols = ['First_Name', 'Last_Name']
    df[df[cols].isna().all(1)]
    
      Last_Name First_Name   Age
    1      None       None  45.0
    

    【讨论】:

      猜你喜欢
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 2018-12-27
      • 2017-07-31
      • 2023-01-19
      • 2018-03-21
      • 2019-02-24
      • 1970-01-01
      相关资源
      最近更新 更多