drchops:
私は、次のデータフレームを持っています:
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のためのすべての行を削除したいと思います:
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