それはパンダを使用して条件を満たしていない場合は行を削除する方法

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=364659&siteId=1