首页 > 解决方案 > Pandas DataFrame - 将行拆分为 n 个窗口,将窗口移动 m 个元素,找到平均值

问题描述

我有一个 DataFrame,该列包含(例如)30 行,您需要将它们拆分为 5 个元素的窗口,将每个窗口相对于另一个窗口移动 4 个元素并找到沿行的平均值。应该还剩 10 行。行数和窗口大小可以是任意的。是否有某种机制可以在熊猫中移动窗口和计算值? 例子

标签: pythonpandasdataframe

解决方案


@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)

推荐阅读