Получите среднее значение средней группы по данным чч: мм: сс в python, используя pandas - PullRequest
1 голос
/ 12 марта 2020

У меня есть pandas фрейм данных со следующими примерами данных:

Group   Time
1       01:40:00
1       01:32:00
2       00:56:31

Я хочу, чтобы мой вывод был:

Group   Time
1       01:36:00
2       00:56:31

При запуске dtype, Group и Time хранятся в виде объектов.

Я прочитал, и, возможно, вы можете сделать это только путем преобразования данных в чч: мм: сс: мс. Я попытался использовать функцию timedelta, но безуспешно.

def rreplace(s, old, new, occurrence):
    li = s.rsplit(old, occurrence)
    return new.join(li)
df['New Time']=pd.to_timedelta(df['Time'].apply(lambda x: rreplace('00:{}'.format(x), ':', '.', 1)))

df.groupby(['Group'])['New Time'].mean()

Теперь я знаю, что этот код проталкивает его вниз на слой. то есть секунды теперь миллисекунды. но я хотел бы сделать это в обратном порядке и показать мне правильное время чч: мм: сс в формате чч: мм: сс: мс, чтобы я мог выполнять математические операции над ним.

Любая помощь будет принята с благодарностью. Спасибо!

1 Ответ

1 голос
/ 12 марта 2020

Для меня рабочий агрегат по GroupBy.agg с sum и подсчет по size, а затем разделить столбцы, протестированные в pandas 0.25.1:

df['New Time'] = pd.to_timedelta(df['Time'])
df = df.groupby(['Group'])['New Time'].agg(['sum','size'])
df = df['sum'].div(df['size']).reset_index(name='Time')
print (df)
   Group     Time
0      1 01:36:00
1      2 00:56:31
...