python - 在 Pandas 中按 ID 有条件地删除行
问题描述
我有一个熊猫df:
ID Score C D
1 2 x y
1 nan x y
1 2 x y
2 3 x y
2 2 x y
3 2 x y
3 4 x y
3 3 x y
对于每个 ID,例如删除 df.Score = 2 的行,但仅当该 ID 存在 3 或 4 时。我想保留每个 IDnans
的2
唯一分数 = 2。
所以我得到:
ID Score C D
1 2 x y
1 nan x y
1 2 x y
2 3 x y
3 4 x y
3 3 x y
任何帮助,非常感谢
解决方案
采用:
df[~df.groupby('ID')['Score'].apply(lambda x:x.eq(2)&x.isin([3,4]).any())]
ID Score C D
0 1 2.0 x y
1 1 NaN x y
2 1 2.0 x y
3 2 3.0 x y
6 3 4.0 x y
7 3 3.0 x y
推荐阅读
- python-3.x - 如何根据 Bing Ads API 中的指标进行过滤?
- javascript - Laravel Echo 不监听公共频道事件?
- python - pandas 堆积条形图 - 改变堆积条的边缘颜色
- python - 如何在不编辑字典本身的情况下提取和编辑字典值?
- postgresql - 如何通过从 Jasper 软件工作室的当前日期和旧日期中减去来获得网络天数?
- javascript - 如何在 JavaScript 中部分等待嵌套的 Promise?
- node.js - Foreach 字符串数组,每个都是 upsert 并递增到 1,但在特定字段上保存 2
- swift - 从 JSON 创建日期数组
- r - 对于每个唯一的用户 id,创建一个直方图频率向量 R
- jmeter - 是否可以在不同的时间间隔运行线程-JMeter