Обработка различных форматов времени в кадре данных - PullRequest
1 голос
/ 09 ноября 2019

Я работаю над фреймом данных со столбцом, перегруппировывающим другой формат времени, например

    Time                ID    ...
0   1 hrs 1 min 1 sec   1     
1   1 min 1 sec         2
2   1 sec               1

Я хотел бы рассчитать среднее значение столбца времени, сгруппированного по идентификаторам. Моя проблема в том, что формат времени зависит от строки.

Я пытался использовать функцию mean() в столбце времени

df[["ID", "Time"]].groupby(["ID"]).agg(lambda x: x.mean())

, но она не работает. Я попытался отформатировать до даты, чтобы затем вычислить среднее значение, но format="%H hrs %M min %S sec" применяется только к первому случаю, и я получаю сообщение об ошибке:

ValueError: время данных '1 мин 1 сек' неформат соответствия "% Ч час% M мин% S сек" (поиск)

1 Ответ

2 голосов
/ 09 ноября 2019

Преобразование Time в Timedelta, преобразование в секунды и вызов mean. Перед этим вам нужно заменить hrs на hours.

s = pd.to_timedelta(df.Time.replace('hrs', 'hours', regex=True)).dt.total_seconds()
s.groupby(df.ID).mean()

Out[110]:
ID
1    1831.0
2      61.0
Name: Time, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...