我有一个熊猫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时才行。当每个ID的唯一分数= 2时,我想保留nans
和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
任何帮助,非常感谢
答案 0 :(得分:2)
使用:
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