我有以下数据框:
ID Days TreatmentGiven TreatmentNumber
--- ---- -------------- ---------------
1 0 False NaN
1 30 False NaN
1 40 True 1.0
1 56 True 2.0
2 0 False NaN
2 14 True 4.0
2 28 True 5.0
3 0 False NaN
3 28 True 1.0
3 56 True 2.0
4 0 False NaN
4 100 True 6.0
4 128 True 7.0
我想删除 ID 不包含 TreatmentNumber == 1.0 的所有行,结果如下:
ID Days TreatmentGiven TreatmentNumber
--- ---- -------------- ---------------
1 0 False NaN
1 30 False NaN
1 40 True 1.0
1 56 True 2.0
3 0 False NaN
3 28 True 1.0
3 56 True 2.0
最好的方法是什么?
谢谢。
最佳答案
您可以使用groupby().transform()
:
df[df.TreatmentNumber.eq(1).groupby(df['ID']).transform('any')]
输出:
ID Days TreatmentGiven TreatmentNumber
0 1 0 False NaN
1 1 30 False NaN
2 1 40 True 1.0
3 1 56 True 2.0
7 3 0 False NaN
8 3 28 True 1.0
9 3 56 True 2.0
关于python - 如果行不满足使用 pandas 的条件,如何删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60839146/