У меня есть датафрейм с 2 столбцами: UserProductCombo, OrderDates. У меня есть несколько дат заказа для каждого пользователя / группы продуктов (от 1 до 5 дат на группу).
Я отсортировал данные в порядке убывания, чтобы получить самую верхнюю дату заказа для каждой группы.
Я хотел бы рассчитать различия между датами заказа для каждой группы и поместить их в новую столбец в моем фрейме данных (В ДНЯХ).
(т. Е. 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