时间:2017-09-21 17:25:42

标签: python pandas analysis

我正在使用订单处理数据集。其中包含两列,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技术来实现这一目标。

2 个答案:

答案 0 :(得分: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 :(得分: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