我为无信息的头衔道歉,但我需要帮助一个大熊猫请求,我无法以小标题恢复。
所以我有一些包含
列的订单的数据框OrderId
ClientId
OrderDate
ReturnQuantity
我想添加一个布尔列HasReturnedBefore
,仅当具有相同True
的客户发出一个或多个先前订单(ClientId
劣质时,才会OrderDate
),ReturnQuantity
大于0
。
我不知道如何解决这个问题,我对目前大熊猫的所有微妙之处还不够熟悉。
答案 0 :(得分:0)
如果我理解你的问题,这就是你需要的:
df.sort_values(by=['ClientId','OrderDate']).assign(HasReturnedBefore = lambda x: (x['ClientId'] == x['ClientId'].shift(1))&(x.groupby('ClientId')['ReturnQuantity'].transform(all)))
首先,您使用need to sort_values列来区分记录 - 在这种情况下为ClientId
和OrderDate
。
现在您可以使用assign用于向数据框添加新列。
在文档中,您可以看到如何使用assign
,但在这种情况下,我所做的是: