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