如何计算依赖其他列的可变窗口滚动平均并生成DataFrame对应列
Pandas 分组可变窗口滚动平均实现方案
你需要的可变窗口滚动平均本质是按用户分组后的扩展窗口均值计算,即每个用户分组内从第一条记录到当前行所有Rating的平均值,完全匹配你给出的预期结果,具体实现代码如下:
完整代码示例
1. 导入依赖并构造示例数据
import pandas as pd # 构造示例DataFrame data = { 'used_id': [1, 1, 1, 1, 2, 2], 'Date': ['Aug 1', 'Aug 1', 'Aug 2', 'Aug 5', 'July 5', 'July 6'], 'Rating': [5, 5, 1, 1, 4, 5] } df = pd.DataFrame(data)
2. 核心计算逻辑
# 按used_id分组计算扩展窗口平均,保留2位小数 df['Rolling_avg'] = df.groupby('used_id')['Rating']\ .expanding()\ .mean()\ .reset_index(level=0, drop=True)\ .round(2)
逻辑说明
groupby('used_id'):保证计算逻辑在每个用户独立分组内执行,不会跨用户统计expanding():生成从分组首行到当前行的动态可变窗口,天然匹配你的可变窗口需求reset_index(level=0, drop=True):消除分组计算生成的多级索引,保证结果和原DataFrame行顺序对齐round(2):保留两位小数,和你给出的预期输出格式一致
如果你更习惯用rolling方法实现,也可以用如下写法,效果完全一致:
df['Rolling_avg'] = df.groupby('used_id')['Rating']\ .rolling(window=999, min_periods=1)\ .mean()\ .reset_index(level=0, drop=True)\ .round(2)
内容的提问来源于stack exchange,提问作者Marat
相关产品推荐
相关产品推荐

