2017-09-21 24 views
0

我正在處理訂單處理數據集。其中包含兩列,Order_ID和Transaction_Phase。在訂單流程中,訂單首次預訂和預訂後可能需要執行幾個步驟。在條件下刪除行

在我目前的問題,我想保持所有的行,直到它達到批准。批准後的任何其他行都應該被刪除。我只對在批准之前發生的事情感興趣,所以在批准後我不需要任何信息。

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

我希望我的輸出如下所示:

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

誰能幫我引導了正確的方向:軟件,邏輯,文件等我使用python的技術來實現這一目標。

回答

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