Как я могу контролировать почасовую настройку GROUPBY в Pandas? - PullRequest
2 голосов
/ 20 января 2020

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

time                    value
2019-01-01 8:00:00       10
2019-01-01 8:30:00       20
2019-01-01 9:00:00       30
2019-01-01 9:30:00       100
2019-01-01 10:00:00      400

Используя pd.groupby(pd.Grouper(key = 'time', freq = '1h')).sum().reset_index(). Он вернул:

time                   value
2019-01-01 8:00:00      30
2019-01-01 9:00:00      130
2019-01-01 10:00:00     400

Он основан на любом связанном значении Часа, чтобы иметь групповое агрегирование. Но как я могу контролировать настройку времени группы? Так как я хотел бы сделать любую >8 to <= 9 группу 9. Например:

time                   value
2019-01-01 8:00:00      10
2019-01-01 9:00:00      50
2019-01-01 10:00:00     500

Ответы [ 2 ]

1 голос
/ 20 января 2020

Использование closed='right' т.е.

pd.Grouper(key = 'time', freq = '1h', closed='right')
1 голос
/ 20 января 2020

IIU C ceil

Yourdf=df.groupby(df.index.ceil('H')).sum()
                     value
time                      
2019-01-01 08:00:00     10
2019-01-01 09:00:00     50
2019-01-01 10:00:00    500

Или resample

df.resample('H',closed='right').sum()
                     value
time                      
2019-01-01 07:00:00     10
2019-01-01 08:00:00     50
2019-01-01 09:00:00    500
...