df=pd.DataFrame({"cust": ['A55', 'A55', 'A55', 'B080', 'B080', 'D900', 'D900', 'D900', 'D900', 'C019', 'C019', 'Z09c', 'A987', 'A987', 'A987'],
"date":['01/11/2016', '01/11/2016', '01/11/2016', '08/17/2016', '6/17/2016','03/01/2016',
'04/30/2016', '05/16/2016','09/27/2016', '04/20/2016','04/29/2016', '07/07/2016', '1/29/2016', '10/17/2016', '11/11/2016' ],
"item": ['A10BABA', 'A10BABA', 'A10DBDB', 'A9GABA', 'A11AD', 'G198A', 'G198A', 'F673', 'A11BB', 'CBA1', 'CBA1', 'DA21',
'BG10A', 'CG10BA', 'BG10A']
})
df.date = pd.to_datetime(df.date)
df = df.sort_values(["cust", "date"], ascending = True)
所需的输出将如图所示-在名为“cust_item_rank”的新列中按购买日期订购所有唯一的项目,并删除同一用户对同一项目的任何重复订单。
为了进一步澄清,由同一用户在同一日期购买的物品应具有与客户A55所示的相同的顺序/等级(A10BABA和A10DBDB被列为1)。
我花了相当长的一段时间来使用group by和/或rank操作的组合,但迄今为止没有成功。例如:
df["cust_item_rank"] = df.groupby("cust")["date"]["item"].rank(ascending = 1, method = "min")
产生错误(异常:列日期已选定)。
有人能告诉我这里想要的解决方案吗?