pandas 按多列 NULL 筛选

pandas filter by multiple columns NULL

我有一个 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()]

但这很烦人,因为我需要为每个 column/condition 编写大量重复代码。如果有大量列,则无法维护。是否可以编写一个函数来为我生成此 python 代码?

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

中分别分析它们

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