Фрейм данных:
date A B C D
index
0 2015-01 .. .. .. ..
1 2015-01 .. .. .. ..
2 2015-02 .. .. .. ..
3 2015-02 .. .. .. ..
4 2015-03 .. .. .. ..
5 2015-03 .. .. .. ..
6 2015-04 .. .. .. ..
7 2015-04 .. .. .. ..
8 2015-05 .. .. .. ..
9 2015-05 .. .. .. ..
...
1000 ... .. .. .. ..
Я хочу выполнить итерацию, используя дату (pd.to_datetime), начиная с фиксированного окна (например, первые три месяца [2015-01, 2015-01, 2015-02, 2015-02, 2015-03, 2015-03]) и возврат фрейма данных:
date A B C D
index
0 2015-01 .. .. .. ..
1 2015-01 .. .. .. ..
2 2015-02 .. .. .. ..
3 2015-02 .. .. .. ..
4 2015-03 .. .. .. ..
5 2015-03 .. .. .. ..
Затем добавляем следующий месяц [2015-04, 2015-04] и удаляем самый старый [2015-01, 2015-01], возвращая следующий фрейм данных:
date A B C D
index
2 2015-02 .. .. .. ..
3 2015-02 .. .. .. ..
4 2015-03 .. .. .. ..
5 2015-03 .. .. .. ..
6 2015-04 .. .. .. ..
7 2015-04 .. .. .. ..
Продолжая это до конца данных.
Я выяснил следующий код:
periods = len(dataframe)
fxw = 3
for i in range(0, periods):
start = i
if i + fxw > periods:
break
else: end_df = i + fxw
# output:
# df1
date A B C D
index
0 2015-01 .. .. .. ..
1 2015-01 .. .. .. ..
2 2015-02 .. .. .. ..
# df2
date A B C D
index
3 2015-02 .. .. .. ..
4 2015-03 .. .. .. ..
5 2015-03 .. .. .. ..
...
# dfend
Где я могу установить фиксированное окно (fxw = 3) для итерации по длине фрейма данных 3 строки за раз до конца данных. (например, если фрейм данных имеет 12 строк, он вернет 4 фрейма данных по 3 строки в каждом). Однако таким образом я не выбираю окно по дате и не удаляю последнюю точку данных и не добавляю следующую. Я пока не придумал, как это сделать. Если у кого-то есть возможное решение / предложение, мы будем очень признательны! Спасибо!
pd.Period()
, иpd.PeriodIndex()
были бы полезны для создания этого трехмесячного скользящего окна; см. pandas.pydata.org/pandas-docs/stable / reference / api / - person jsmart   schedule 31.07.2020