熊猫按多列过滤NULL

时间:2019-02-21 19:49:52

标签: python pandas metaprogramming

我有一个熊猫数据框,如:

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。现在,我想有效地选择这些不同的组,并分别对它们进行分析。

1 个答案:

答案 0 :(得分:2)

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