2017-09-21 13 views
0

私は注文プロセスのデータセットを扱っています。 Order_IDとTransaction_Phaseという2つの列が含まれています。注文手続きでは、注文が最初に予約されて予約されるまでに、いくつかのステップがあります。条件の行を削除する

私の現在の問題では、承認されるまですべての行を保持したいと考えています。承認後の他の行は削除する必要があります。私は承認までに何が起こったかだけに興味があるので、承認後に情報は必要ありません。

Order_ID   Tranaction_Phase 
529334333   Quote 
529334333   Deal approved 
529334333   Rejected deal 
470660845   Quote 
470660845   Deal approved 
470660845   Reject Deal 

私は私の出力は次のようになりたい:私はこれを達成するためにPythonの技術を使用していますパッケージ、ロジック、ドキュメントなど:

Order_ID   Tranaction_Phase 
529334333   Quote 
529334333   Deal approved 
4706608452  Quote 
4706608452  Deal approved 

誰もが正しい方向に私を操縦助けることができます。

答えて

1
In [36]: df.groupby('Order_ID', group_keys=False) \ 
      .apply(lambda x: x.loc[:x['Tranaction_Phase'].eq('Deal approved').idxmax()]) 
Out[36]: 
    Order_ID Tranaction_Phase 
3 470660845   Quote 
4 470660845 Deal approved 
0 529334333   Quote 
1 529334333 Deal approved 
2
df[df.index<=df.groupby('Order_ID')['Tranaction_Phase'].transform(lambda x:x.index[x=='Dealapproved'])] 
Out[649]: 
    Order_ID Tranaction_Phase 
0 529334333   Quote 
1 529334333  Dealapproved 
3 470660845   Quote 
4 470660845  Dealapproved 
+1

@MaxU編集〜:) – Wen

関連する問題