Группировать по TimeDelta Python Pandas - PullRequest
1 голос
/ 22 апреля 2020

Я пытаюсь создать группу в Python. То, что у меня есть, это фрейм данных, который имеет два столбца ... Имя и разница во времени (Разница во времени) - это переменная timedelta, которая выглядит как следующие -1 дней 14: 00: 0000, 0 дней 00: 08: 0000, т. Д. Имя имеет дубликаты ... похоже, что Брэд, Эми, Брэд, Брэд, Билл, Эми ... что я хочу сделать, это найти среднее значение разницы во времени по имени. Кроме того, разница во времени имеет значения NA.

Я пытался

data_frame['NewMean'] = data_frame['TimeDifference'].values.astype(np.int64)

means = data_frame.groupby(data_frame['Name']).mean()

means['NewMean'] = pd.to_timedelta(means['NewMean']) 

Но я продолжаю получать недопустимый литерал ошибки для int ()

Я знаю исправления с плавающей точкой это, но я хочу создать новый фрейм данных с этой информацией, который просто перечисляет имена (без дубликатов) и среднее значение каждого имени

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Существует способ получить значения без приведения к int и игнорирования значений nan или nat, но с использованием лямбда-выражения, результаты являются объектами timedelta:

import numpy as np

time_groups = data_frame.groupby('Name').apply(
    lambda df: np.mean(df.TimeDifference)
)
0 голосов
/ 22 апреля 2020

Попробуйте это:

data_frame['TimeDifference'] = data_frame['TimeDifference'].dt.days
data_frame['mean'] = data_frame.groupby('Name')['TimeDifference'].mean()
...