Источник:
import pandas as pd
import numpy as np
cols = ['Date', 'Time', 'Load', 'Battery', 'Panel',
'Wind', 'Temp', 'Humidity', 'Volt']
data = pd.read_csv('test.csv',delimiter=';',header=0,names=cols,
decimal=',',parse_dates[[0,1]],
infer_datetime_format=True)
data.set_index('Date_Time',inplace=True)
У меня есть этот фрейм данных:
In [126]: data.head()
Out[126]:
Load Battery Panel Wind Temp Humidity Volt
Date_Time
2018-07-31 13:07:15 13.3 326.3 353.1 0.98 33.93 21.92 3.89
2018-07-31 13:08:15 14.0 314.4 342.5 0.59 33.88 21.84 3.88
2018-07-31 13:09:16 13.4 309.6 335.5 0.39 33.84 22.14 3.88
2018-07-31 13:10:16 13.8 285.1 313.8 2.55 33.71 23.18 3.88
2018-07-31 13:11:16 13.6 292.9 314.7 2.03 33.62 23.25 3.88
......
с другими 93000 строками. с 2018-07-31 по 2018-04-10. Я хотел бы повторить выборку, взяв сумму значений для каждого 10-минутного кадра. Итак, я попробовал:
In [127]: data.resample('10min',closed='left',label='left').sum()
Out[127]:
Load Battery Panel Wind Temp Humidity Volt
Date_Time
2018-01-08 00:00:00 136.9 -140.6 -2.9 19.06 291.27 245.63 39.45
2018-01-08 00:10:00 137.3 -140.7 -3.1 15.14 290.62 244.88 39.42
2018-01-08 00:20:00 137.4 -140.4 -2.3 18.03 288.61 246.44 39.44
2018-01-08 00:30:00 137.5 -140.4 -2.2 12.61 286.97 246.83 39.43
Это близко к тому, что я ожидал, но «повторная выборка» удаляет все данные с первого дня (я подозреваю, может быть, потому что серия не начинается в полночь), каков правильный способ сделать повторную выборку? Есть две проблемы:
В результате пропущен первый день, т. Е. Все данные удалены, а пересчитанный кадр данных начинается первого августа, а не 07/31.
Можно считать интервалы, которые начинаются в полночь, и они таковы, что они кратны 10 минутам (так что, хорошо для 00:00, 10:00, 20:00), но тогда я ожидаю, что первая группировка будет :
2018-07-31 13:07:15 13.3 326.3 353.1 0.98 33.93 21.92 3.89
2018-07-31 13:08:15 14.0 314.4 342.5 0.59 33.88 21.84 3.88
2018-07-31 13:09:16 13.4 309.6 335.5 0.39 33.84 22.14 3.88
а затем с 13:10:16, конечно, в первый день набора данных, а не во второй.
Хорошо. Я решил это с помощью:
x = data['2018-07-31'].resample('10min').sum()
y = data.resample('10min',closed='left',label='left').sum()
r = pd.concat([x,y])
но я думаю, что это должна быть ошибка в повторной выборке.