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