You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对DataFrame的数组类型列使用pd.rolling计算逐元素滚动均值

实现思路

pandas的pd.rolling方法原生不支持元素为列表的列,我们可以先把data列的列表拆分为独立的数值列,完成滚动均值计算后再合并回列表格式即可。

完整实现代码

首先构造测试用的DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'time': range(10),
    'data': [[8,8,1], [3,3,4], [4,7,0], [1,4,4], [0,3,5], [1,1,6], [2,0,0], [0,9,3], [2,9,0], [2,8,0]]
})

然后拆分列+计算滚动均值+合并回列表:

# 1. 将data列的列表拆分为独立的数值列
expanded_data = pd.DataFrame(df['data'].tolist(), index=df.index)
# 2. 计算窗口为3的逐列滚动均值,round(1)保留1位小数和示例效果一致
rolling_res = expanded_data.rolling(3).mean().round(1)
# 3. 将每行的计算结果合并为列表,前两行缺失值设为NaN
df['rolling'] = rolling_res.apply(list, axis=1).mask(rolling_res.isna().all(axis=1))

输出验证

执行print(df.head())可以看到前几行输出符合预期:

time       data          rolling
0     0  [8, 8, 1]              NaN
1     1  [3, 3, 4]              NaN
2     2  [4, 7, 0]     [5.0, 6.0, 1.7]
3     3  [1, 4, 4]  [2.7, 4.7, 2.7]
4     4  [0, 3, 5]  [1.7, 4.7, 3.0]

如果需要自定义精度,调整round()的参数即可。

内容的提问来源于stack exchange,提问作者connor449

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:24:03