首页 > 解决方案 > 如何选择具有相同 id 并在另一列中具有所有缺失值的行

问题描述

我有以下数据框:

ID  col_1
1    NaN
2    NaN
3    4.0
2    NaN
2    NaN
3    NaN
3    3.0
1    NaN

我需要以下输出:

ID  col_1
1    NaN
1    NaN
2    NaN
2    NaN
2    NaN

如何在熊猫中做到这一点

标签: pandasdataframepandas-groupby

解决方案


您可以创建一个布尔掩码,然后通过和usingisna对该掩码进行分组,然后您可以在此掩码的帮助下过滤行:IDtransformall

mask = df['col_1'].isna().groupby(df['ID']).transform('all')
df[mask].sort_values('ID')

或者,您可以使用groupby+filter过滤出满足条件的组,其中所有值col_1都在,NaN但此方法应该比上述方法慢:

df.groupby('ID').filter(lambda g: g['col_1'].isna().all()).sort_values('ID')

   ID  col_1
0   1    NaN
7   1    NaN
1   2    NaN
3   2    NaN
4   2    NaN

推荐阅读