Pandas DataFrame - разбить строки на n окон, сдвинуть окна на m элементов, найти среднее

У меня есть DataFrame, в столбце содержится (для примера) 30 строк, необходимо разбить их на окна размером 5 элементов, сдвинуть каждое окно на 4 элемента относительно другого окна и найти среднее значение по строке. Должно остаться 10 строк. Количество строк и размер окна может быть произвольным. Есть ли какой-то механизм смещения окон и вычисления значений в pandas?

Пример


Ответы (1 шт):

Автор решения: CrazyElf

Ну как-то так. Просто всё это надо тщательно продумать и посчитать, а так ничего сложного:

import pandas as pd

df = pd.DataFrame({'feature': [i + j + i / 10 for i in range(6) for j in range(1, 6)]})
df_new = pd.DataFrame([[df.iloc[j + i * 4, 0] if i - 1 < j < i + 5 else pd.NA for i in range(6)] for j in range(10)])
new_feature_mean = df_new.sum(axis=1) / (~df_new.isna()).sum(axis=1)

Что получается в new_feature_mean:

0     1.00
1     2.05
2     3.10
3     4.15
4     5.20
5     6.30
6     7.35
7     8.40
8     9.45
9    10.50
dtype: float64
→ Ссылка