我有一个存储用户订单的日期框架“df”:
user_id order_date
0 a 2018-01-17
1 a 2018-04-29
2 a 2018-05-19
3 a 2018-05-21
4 a 2018-06-15
5 b 2018-09-18
6 b 2019-01-30
7 b 2019-02-01
8 b 2019-07-03
9 c 2019-07-31
10 c 2019-12-10
11 c 2019-12-12
12 c 2019-12-24
'order_date' 已订购。我想知道不同订单的不同用户的日期差异。我需要使用“groupby”来分隔用户,然后计算 datediff。结果应该是:
user_id datediff
0 a NA
1 a 102
2 a 20
3 a 2
4 a 25
5 b NA
6 b 134
7 b 2
8 b 152
9 c NA
10 c 132
11 c 2
12 c 12
我知道如何通过使用天真的循环来实现这一点。如何以更好的方式获得它,例如移位或滚动?顺便说一句,您不必获得完全相同的结果。“NA”可能是“NAT”。“102”可能是“102 天”。
此外,我怎样才能获得不同用户的日期差异的手段?结果应该是:
user_id mean_datediff
0 a 37.25
1 b 68.00
2 c 48.67
对于用户 a,平均值为 (102+20+2+25)/4=37.25,而不是 149/5。
最后一步是将“mean_datediff”添加到原始df中。预期的输出是:
user_id order_date mean_datediff
0 a 2018-01-17 37.25
1 a 2018-04-29 37.25
2 a 2018-05-19 37.25
3 a 2018-05-21 37.25
4 a 2018-06-15 37.25
5 b 2018-09-18 68.00
6 b 2019-01-30 68.00
7 b 2019-02-01 68.00
8 b 2019-07-03 68.00
9 c 2019-07-31 48.67
10 c 2019-12-10 48.67
11 c 2019-12-12 48.67
12 c 2019-12-24 48.67