Разделение Pandas Dataframe на фрагменты по метке времени - PullRequest
2 голосов
/ 19 июня 2020

Допустим, у меня есть pandas фрейм данных df

DF

Timestamp     Value
Jan 1 12:32   10
Jan 1 12:50   15
Jan 1 13:01   5
Jan 1 16:05   17
Jan 1 16:10   17
Jan 1 16:22   20

Результат, который я хочу вернуть, это фрейм данных со средними значениями за час (или любой временной сегмент, указанный пользователем). Скажем, мой указанный временной отрезок здесь составляет 1 час. Я хочу вернуть что-то вроде

Jan 1 12:00 12.5
Jan 1 13:00 5
Jan 1 14:00 0
Jan 1 15:00 0
Jan 1 16:00 18

Есть ли простой способ, встроенный в pandas, для такого сегмента? Такое ощущение, что должно быть, но мой поиск в Google "разбиения pandas фрейма данных" разными способами меня не подводит.

1 Ответ

1 голос
/ 19 июня 2020

Нам нужно сначала преобразовать в datetime, а затем выполнить resample

df.Timestamp=pd.to_datetime('2020 '+df.Timestamp)

df.set_index('Timestamp').Value.resample('1H').mean().fillna(0)
Timestamp
2020-01-01 12:00:00     7.5
2020-01-01 13:00:00     5.0
2020-01-01 14:00:00     0.0
2020-01-01 15:00:00     0.0
2020-01-01 16:00:00    18.0
Freq: H, Name: Value, dtype: float64

Преобразовать индекс

newdf.index=newdf.index.strftime('%B %d %H:%M')
newdf
Timestamp
January 01 12:00     7.5
January 01 13:00     5.0
January 01 14:00     0.0
January 01 15:00     0.0
January 01 16:00    18.0
Name: Value, dtype: float64
...