pandas - 如何选择具有相同 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
如何在熊猫中做到这一点
解决方案
您可以创建一个布尔掩码,然后通过和usingisna
对该掩码进行分组,然后您可以在此掩码的帮助下过滤行:ID
transform
all
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
推荐阅读
- android - RxJava blockingFirst/Single 在 JUnit 5 Retrofit 测试中返回错误异常
- css - 未检测到 Safari 13 CSS 变量
- python - 我需要使用 python json 解析将我的 2 个列表单元到另一个 1
- python-3.x - Python3 嵌套字典打印
- python - 我不能用海龟模块在 python 中做一个桨
- amazon-web-services - 无法在 AWS 上侦听端口 443
- javascript - 如何使用订阅 Observable 在 Angular 中执行查找
- python - Pyspark - 从已经具有(错误)模式的 Parquet 文件中读取时,如何强制 spark 再次推断模式?
- javascript - 如何使用 js 或 jquery 将图像的“src”标签修改为 data-src 以启用延迟加载图像
- java - 在静态方法JAVA中调用非静态方法