2017-03-13 4 views
1

私はpandasデータフレームを使用しています。条件(cond = 1) 。2つ以上の列を持つpandasデータフレームを使用してPythonで特定の条件が満たされた後に観測を削除する方法

のように私のデータセットが見えます:私は次の人が同じ名前を持っている場合、コードは最初の条件かどうかを確認し、その後、チェックしたい

person med cond 
    A  a  0  
    A  b  0 
    A  a  1  
    B  a  0 
    B  c  1  
    C  e  1 
    D  a  0 
    D  f  0 

person med cond 
    A  a  0  
    A  b  0  
    A  a  1 
    A  d  0 
    A  e  0 
    B  a  0 
    B  c  1 
    C  e  1 
    C  f  0 
    D  a  0 
    D  f  0 

私はこれを取得したいですが満たされている場合(cond = 1)、同じ名前の次の行をすべてドロップします。

誰かがこれを手伝ってくれますか?

答えて

0

あなたはDFにgroupbyをすることができ、その後lambdaに関心のCOLを参照して、冗長なインデックスを削除するreset_index(drop=True)を呼び出します。

In [38]: 
df.groupby('person').apply(lambda x: x.loc[:x['cond'].idxmax()] if len(x[x['cond']==0]) != len(x) else x).reset_index(drop=True) 

Out[38]: 
    person med cond 
0  A a  0 
1  A b  0 
2  A a  1 
3  B a  0 
4  B c  1 
5  C e  1 
6  D a  0 
7  D f  0 
+0

はどうもありがとうございました! – Mliss

+0

私は助けることができてうれしい憂慮なし – EdChum

+0

あなたは今アップアップすることができます;) – EdChum

関連する問題