Pandas DateTime Расчет средних значений за день - PullRequest
0 голосов
/ 16 июня 2020

У меня есть 2 столбца данных в pandas DF, который выглядит следующим образом со столбцом «DateTime» в формате ГГГГ-ММ-ДД ЧЧ: ММ: СС - это первые 24 часа, но df для одного полного год или 8784 x 2.

        BAFFIN BAY      DateTime
8759    8.112838 2016-01-01 00:00:00
8760    7.977169 2016-01-01 01:00:00
8761    8.420204 2016-01-01 02:00:00
8762    9.515370 2016-01-01 03:00:00
8763    9.222840 2016-01-01 04:00:00
8764    8.872423 2016-01-01 05:00:00
8765    8.776145 2016-01-01 06:00:00
8766    9.030668 2016-01-01 07:00:00
8767    8.394983 2016-01-01 08:00:00
8768    8.092915 2016-01-01 09:00:00
8769    8.946967 2016-01-01 10:00:00
8770    9.620883 2016-01-01 11:00:00
8771    9.535951 2016-01-01 12:00:00
8772    8.861761 2016-01-01 13:00:00
8773    9.077692 2016-01-01 14:00:00
8774    9.116074 2016-01-01 15:00:00
8775    8.724343 2016-01-01 16:00:00
8776    8.916940 2016-01-01 17:00:00
8777    8.920438 2016-01-01 18:00:00
8778    8.926278 2016-01-01 19:00:00
8779    8.817666 2016-01-01 20:00:00
8780    8.704014 2016-01-01 21:00:00
8781    8.496358 2016-01-01 22:00:00
8782    8.434297 2016-01-01 23:00:00

Я пытаюсь вычислить средние дневные значения «БАФФИНОВАЯ ЗАЛИВА», и я пробовал следующие подходы:

davg_df2 = df2.groupby(pd.Grouper(freq='D', key='DateTime')).mean()
davg_df2 = df2.groupby(pd.Grouper(freq='1D', key='DateTime')).mean()
davg_df2 = df2.groupby(by=df2['DateTime'].dt.date).mean()

Все эти подходы дают тот же ответ, что показан ниже: BAFFIN BAY DateTime
2016-01-01 6.008044

Однако, если вы сделаете математику, правильное среднее значение для 2016-01-01 будет 8,813134 Большое спасибо за вашу помощь. Я предполагаю, что группировка выполняется только по дням или 24 часам для получения последовательных ЕЖЕДНЕВНЫХ средних значений, но 3 подхода, приведенные выше, явно смотрят на другие данные в моем 8784 x 2 DF.

1 Ответ

0 голосов
/ 16 июня 2020

Я только что запустил ваш df с этим кодом и получил 8.813134:

df['DateTime'] = pd.to_datetime(df['DateTime'])
df = df.groupby(by=pd.Grouper(freq='D', key='DateTime')).mean()
print(df)

Результат:

            BAFFIN BAY
DateTime
2016-01-01    8.813134 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...