Для DataFrame с DatetimeIndex, как мне добавить новый столбец, который является агрегацией пересчитанного DatetimeIndex? - PullRequest
0 голосов
/ 28 августа 2018

У меня есть DataFrame с DatetimeIndex, и я хочу создать новый столбец, который будет агрегировать другой столбец, агрегированный Datetime с более медленной частотой. Например, почасовые значения и среднесуточное значение дня, в которое они входят:

[index]                A   A_daily_mean
2018-08-01  00:00:00   6   7.5
2018-08-02  01:00:00   7   7.5
2018-08-03  02:00:00   8   7.5
2018-08-04  03:00:00   9   7.5

Есть ли для этого однострочник?

Это очень просто для других групповых агрегаций (в другое время):

df['groupby_mean'] = df.groupby([col1, col2]).mean()

, но группировка по дате DatetimeIndex терпит неудачу:

df['mean_of_resampled'] = df.groupby(df.index.date).mean()

или альтернативно

df['mean_of_resampled'] = df.resample('1d').mean()

которые оба дают:

[index]                A   A_daily_mean
2018-08-01  00:00:00   6   7.5
2018-08-01  01:00:00   7   NaN
2018-08-01  02:00:00   8   NaN
2018-08-01  03:00:00   9   NaN

Я знаю, что могу добавить значения, выполнив слияние или объединение, но мне интересно, упускаю ли я какой-нибудь лучший, более счастливый способ.

1 Ответ

0 голосов
/ 28 августа 2018

Я думаю, что вы ищете transform(), например ::

In []:
df['A_daily_mean'] = df.groupby(df.index.date).transform('mean')
df

Out[]:
                     A  A_daily_mean
2018-08-01 00:00:00  6           7.5
2018-08-01 01:00:00  7           7.5
2018-08-01 02:00:00  8           7.5
2018-08-01 03:00:00  9           7.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...