【发布时间】:2020-07-19 06:58:09
【问题描述】:
我有一个包含 2 列的数据框:UserProductCombo、OrderDates。我为每个用户/产品组有多个订单日期(每组 1 到 5 个日期)。
我已按降序对数据进行排序,以获得每个组的最高订单日期。
我想计算每个组的订单日期之间的差异,并将它们放在我的数据框中的一个新列中(IN DAYS)。
(即 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
【问题讨论】:
-
@Ranjith 请提供示例输入和预期输出。它有助于更好地解释问题。
-
@MayankPorwal 我已经编辑了帖子,你现在可以看一下吗?
-
@PyCharmer 现在这就是你改进问题的方法!谢谢。
标签: python python-3.x pandas date group-by