У меня есть такой фрейм данных:
user datetime mode
-------------------------------------------------
1 2015-09-10 11:50:27 vehicle
1 2015-11-22 10:15:03 vehicle
1 2015-11-23 10:35:03 stop
2 2015-11-22 10:11:13 walk
2 2015-11-22 10:13:08 walk
2 2015-09-10 10:21:52 stop
Я пытаюсь рассчитать время поездки (режим) для каждого пользователя, для каждого дня месяца.
Мой Идея состояла в том, чтобы извлечь месяц, день, час, а затем сгруппировать по пользователю, месяцу, дню, режиму и часу, чтобы вычислить разницу между максимальными и минимальными значениями, используя это.
df.assign(output=main_table.groupby(['user','month_n','day_n','mode','hour_n']).datetime
.apply(lambda x: x - x.iloc[0]))
однако, когда я пытаюсь подвести итог выводит
df.groupby(['user','month_n','day_n','mode','hour_n'])['output'].sum()
это не дает правильного результата.
Мой желаемый вывод
user month day mode time_spent(sec)
-------------------------------------------------
1 10 5 vehicle 3600
1 10 5 walk 12345
1 10 5 stop 25879
1 10 6 walk 15
1 10 6 vehicle 98522
2 10 5 walk 1298522
2 10 11 vehicle 99622
3 10 6 vehicle 23247
Любая помощь будет высоко ценится !! Спасибо.
ОБНОВЛЕНО лучший пример df
user datetime mode
-------------------------------------------------
1 10/09/2015 11:50:27 vehicle
1 10/09/2015 11:50:37 vehicle
1 10/09/2015 11:52:57 vehicle
1 10/09/2015 11:53:27 vehicle
1 10/09/2015 10:21:52 walk
1 10/09/2015 11:52:02 walk
1 10/09/2015 11:53:32 walk
1 10/09/2015 10:23:32 walk
1 10/09/2015 11:50:22 vehicle
1 10/09/2015 11:50:57 vehicle
2 22/11/2015 10:15:53 walk
2 22/11/2015 10:13:53 walk
2 22/11/2015 10:16:08 walk
2 22/11/2015 10:15:38 walk
2 22/11/2015 10:16:23 walk
2 22/11/2015 10:10:33 walk
2 22/11/2015 10:15:03 walk
2 22/11/2015 10:11:13 walk
2 22/11/2015 10:13:08 walk
2 22/11/2015 10:10:28 walk
для добавления некоторого набора данных контекста, содержащего много пользователей, несколько недель даты и времени и 10 различных режимов, которые можно повторить Много раз в течение дня, у каждого из них есть отметка времени начала / окончания.