Python Polars Groupby_rolling() начинается с размера окнаPython

Программы на Python
Anonymous
Python Polars Groupby_rolling() начинается с размера окна

Сообщение Anonymous »

Код: Выделить всё

import polars as pl
import numpy as np
import pandas as pd
from functime.feature_extractors import FeatureExtractor, binned_entropy

Data_Test = pl.read_csv('./DataDemo.csv')

Calc_T = 200
Data_Test.with_columns(
pl.col('datetime').cumcount().cast(pl.Int32).alias('Index')
).group_by_rolling('Index', period = '{}i'.format(Calc_T)).agg(
pl.col('datetime').last(),
pl.col('*').exclude(['datetime', 'order_book_id', 'underlying_symbol', 'Index']).ts.binned_entropy(bin_count=10).suffix('_binned_entropy'),
pl.col('*').exclude(['datetime', 'order_book_id', 'underlying_symbol', 'Index']).ts.absolute_energy().suffix('_absolute_energy'),
# pl.col('*').exclude(['datetime', 'order_book_id', 'underlying_symbol', 'Index']).ts.autocorrelation(n_lags = 20).suffix('_autocorrelation')

)
В приведенном выше коде закомментированная строка приведет к ошибке:PanicException: невозможно применить операцию к массивам разной длиныВ полярных случаях DF.groupby_rolling('Index', period = '20i'). первая группа будет первой строкой, а вторая группа будет первыми двумя строками. Таким образом, длина окна меньше указанной нами длины.
Я думаю, причина ошибки в том, что алгоритм в закомментированной строке требует временного ряда длиной больше 1, и на практике первая группа имеет только один фрагмент данных.
Я пробовал использовать

Код: Выделить всё

groupby_dynamic('Index', every = '1i', period = '{}i'.format(Calc_T), start_by = 'datapoint')
, но в этом случае длина последней группы становится 1..
Есть ли у Polars способ пропустить первые n-1 строк данных при прокрутке окно, где N — указанная нами длина окна?
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/786 ... indow-size

Вернуться в «Python»