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
