Вычислить среднюю разницу во времени в группах Pandas Python - PullRequest
1 голос
/ 10 мая 2019

Я пытаюсь вычислить среднее время между действиями для определенных групп.Фрейм данных выглядит следующим образом:

Name, Action_ID, Start_Time, End_Time
A, 11, 2019-05-01 09:10:00, 2019-05-01 09:20:00
A, 12, 2019-05-01 09:30:00, 2019-05-01 09:40:00
A, 13, 2019-05-01 09:50:00, 2019-05-01 10:00:00
B, 11, 2019-05-01 09:20:00, 2019-05-01 09:40:00
B, 12, 2019-05-01 09:45:00, 2019-05-01 09:55:00

Я хочу сгруппировать по имени и получить среднее время, прошедшее между временем начала и временем окончания предыдущего действия.В общем, чтобы получить что-то вроде этого:

Name, Avg_Time_Elapsed
A, 10
B, 5

Я создал новый столбец с именем delta со следующим кодом:

df['delta'] = df['Start_Time'] - df['End_Time'].shift(-1)

Но он дает мне странный результат, поскольку он показывает разницу-1 дней вместо минут / секунд.Любой изящный способ написать этот код на Python?Спасибо

1 Ответ

1 голос
/ 10 мая 2019

IIUC, вам нужно groupby здесь

df[['Start_Time','End_Time']]=df[['Start_Time','End_Time']].apply(pd.to_datetime,1)

df.groupby('Name').apply(lambda x : (x['Start_Time']-x['End_Time'].shift()).dt.total_seconds().mean()/60)
Out[469]: 
Name
A    10.0
B     5.0
dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...