У меня есть дата 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
Дата заказа уже заказана. Я хочу знать разницу в размерах пользователей разных заказов. Мне нужно использовать 'groupby', чтобы разделить пользователей, а затем вычислить дату. Результат должен быть:
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
Я знаю, как получить это, используя наивный l oop. Как сделать это лучше, например, сдвигом или вращением? Кстати, вам не нужно получать точно такой же результат. «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