我有一个包含两列的数据框:UserProductCombo,OrderDates。每个用户/产品组有多个订单日期(每组1到5个日期)。
我已按降序排序以获取每个组的最近订单日期。
我想计算每个组订单日期之间的差异,并将其放入数据框中的新列中(以天为单位)。 (即OrderDate1-OrderDate2, OrderDate1-OrderDate3,OrderDate1-OrderDate4,OrderDate1-OrderDate5)。如果不到2个订单,则将其移动到下一组。 示例数据:
到目前为止,我已完成以下内容:
我已按降序排序以获取每个组的最近订单日期。
我想计算每个组订单日期之间的差异,并将其放入数据框中的新列中(以天为单位)。 (即OrderDate1-OrderDate2, OrderDate1-OrderDate3,OrderDate1-OrderDate4,OrderDate1-OrderDate5)。如果不到2个订单,则将其移动到下一组。 示例数据:
>>> bf_recency
UserProduct OrderDates
0 12111211/123232 2020-03-12 17:19:16.103
1 12111211/123232 2020-03-12 18:10:45.974
2 12111211/123232 2020-03-11 17:19:16.103
3 12111211/123232 2020-03-10 18:10:45.974
4 12111211/123232 2020-03-10 18:10:45.974
5 165870101/73066 2020-03-12 19:49:15.752
预期输出:
UserProduct diff(in days)
0 12111211/123232 N/A
1 12111211/123232 0
2 12111211/123232 1
3 12111211/123232 2
4 12111211/123232 2
5 165870101/73066 N/A
到目前为止,我已完成以下内容:
df_frequency = df.groupby(["UserProduct"])['ORDER_DATE'].nlargest(5).reset_index(name ='OrderDates')
df_frequency.sort_values(by=['OrderDates'],inplace=True, ascending=False)
df_freq = df_frequency.groupby(['UserProduct'])['OrderDates'].transform(lambda x: x.diff()) #STUCK HERE