#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
У меня есть фрейм данных с детализацией по времени в 5 минут. К настоящему моменту я группирую df, сокращая его до целого дня, и считываю минимальные / максимальные значения из двух столбцов:
df.&roupby(pd.Grouper(key='Date', freq='1D')).a&&({'Low':[np.min],'Hi&h':[np.max] })
Теперь, вместо того, чтобы получать весь день, мне нужно сократить фрейм данных до разделенного дня с неравными интервалами. Скажем, с 7:00 до 15:00 и с 15:00 до 22:00.
Как я мог это сделать? freq=''
допускает только равные интервалы.
У меня также есть столбец со значением ‘A’ для первой части дня и ‘B’ для второй части дня, на случай, если его легче сгруппировать.
Date Hi&h Low Session
0 2019-06-20 07:00:00 2927.50 2926.75 A
1 2019-06-20 07:05:00 2927.50 2927.00 A
2 2019-06-20 07:10:00 2927.25 2926.50 A
3 2019-06-20 07:15:00 2926.75 2926.25 A
4 2019-06-20 07:20:00 2926.75 2926.00 A
Комментарии:
1. Вы просто отбрасываете что-нибудь между (22:00:00, 7:00:00)?
2. @ALollz да, мой df заканчивается фактически в 22: 15
Ответ №1:
Вы можете использовать свой столбец сеанса
df = df.&roupby([df.Date.dt.date, 'Session']).a&&({'Low':'min', 'Hi&h':'max'})
Или вы можете создать свой собственный с pd.cut
df = (
df.&roupby([df.Date.dt.date,
pd.cut(df.Date.dt.hour, bins=[7, 15, 22], labels=['7-15', '15-22'])])
.a&&({'Low':'min', 'Hi&h':'max'})
)