#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
Итак, я пытаюсь разобраться в функции pandas groupby и уменьшить большой кадр данных, который у меня есть. Вот пример:
A B
2016-09-23 19:36:08 00:00 NaN 34.0
2016-09-23 19:36:11 00:00 NaN 33.0
2016-09-23 19:36:12 00:00 24.1 NaN
2016-09-23 19:36:14 00:00 NaN 34.0
2016-09-23 19:36:17 00:00 NaN 34.0
2016-09-23 19:36:20 00:00 NaN 34.0
2016-09-23 19:36:22 00:00 24.2 NaN
2016-09-23 19:36:23 00:00 NaN 34.0
2016-09-23 19:36:26 00:00 NaN 34.0
2016-09-23 19:36:29 00:00 NaN 34.0
2016-09-23 19:36:32 00:00 24.1 NaN
2016-09-23 19:36:33 00:00 NaN 34.0
2016-09-23 19:37:00 00:00 NaN 34.0
2016-09-23 19:37:02 00:00 24.1 NaN
Итак, у меня есть 2 ряда данных «A» и «B», которые были отобраны с разной скоростью, с их временем выборки в качестве индекса исходного фрейма данных.
Теперь я хотел бы сгруппировать строки фрейма данных по дате / часу / минуте и вернуть среднее значение данных за минуту. Здесь среднее значение должно игнорировать отсутствующие значения во фрейме данных.
Так, например, я бы вернул что-то вроде этого:
A B
2016-09-23 19:36:00 00:00 24 34.0
2016-09-23 19:37:00 00:00 24.1 33.0
Возможно ли это сделать с помощью встроенной функции pandas?
Ответ №1:
Я думаю, вам нужен resample
with Resampler.mean
, который вычисляет среднее значение групп, исключая пропущенные значения:
print (df.resample('1Min').mean())
A B
2016-09-23 19:36:00 24.133333 33.888889
2016-09-23 19:37:00 24.100000 34.000000
Другое решение с groupby
:
print (df.groupby([pd.TimeGrouper('1Min')]).mean())
A B
2016-09-23 19:36:00 24.133333 33.888889
2016-09-23 19:37:00 24.100000 34.000000
Комментарии:
1. Спасибо за ваш ответ. Оба эти решения выглядят красиво. Но для меня они возвращаются с ошибкой: «Ошибка данных: нет числовых типов для агрегирования». Может ли это быть связано с тем, что индекс моего фрейма данных имеет объекты datetime?
2. Нет, это означает, что ваши столбцы не преобразуются в числовые. Попробуйте
df.A = df.B.astype(float)
иdf.B = df.b.astype(float)
. Если возвращается ошибка, есть другое возможное решение, поэтому вопрос в том, как работаетastype
кастинг?