Расчет в сгруппированном фрейме данных с указателем типа даты - PullRequest
0 голосов
/ 04 мая 2020

У меня есть такой набор данных:

date_time       value
30.04.20 9:31   1
30.04.20 10:12  5
30.04.20 15:16  2
01.05.20 12:01  63
01.05.20 13:00  78
02.05.20 7:23   4
02.05.20 17:34  2
02.05.20 18:34  4
02.05.20 21:39  3458
03.05.20 9:34   77
03.05.20 14:54  4
03.05.20 16:54  7
04.05.20 15:24  35

Мне нужно сгруппировать записи в течение дня и рассчитать среднее значение за 3 дня (day_before-today-next_day) следующим образом (желаемый результат):

    date    value
01.05.2020  3617
02.05.2020  3697
03.05.2020  3591

Я написал начало кода

import pandas as pd
df = pd.read_excel(...)
df['date'] = df['date_time'].dt.normalize()
df.groupby('date').sum()

Сгруппированный кадр данных выглядит так:

date    value
30.04.2020  8
01.05.2020  141
02.05.2020  3468
03.05.2020  88
04.05.2020  35

Но я не могу go дальше, потому что я не понимаю, как получить желаемый результат в краткой «pandas». Пожалуйста, дайте мне несколько советов.

1 Ответ

1 голос
/ 04 мая 2020

Вы почти выполнили свою работу, просто добавьте следующие строки кода в текущее решение:

df_group = df.groupby('date').sum()
results = df_group.rolling(window=3, min_periods=3, center=True).sum()

print(results)
2020-04-30     NaN
2020-05-01  3617.0
2020-05-02  3697.0
2020-05-03  3591.0
2020-05-04     NaN

# retain only rows with values
print(results.dropna())
date              
2020-05-01  3617.0
2020-05-02  3697.0
2020-05-03  3591.0

Надеюсь, это поможет!

...