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

Pandas rolling函数报错:Wrong number of items passed 2, placement implies 1

问题原因及解决方法

错误出在你给groupby加了as_index=False参数,导致执行rolling(...).mean()后返回的是包含两列的DataFrame(一列是country,一列是计算出的移动均值),而你要给df['ma']赋值的是一维的Series,所以才会报“传入2个元素,但只需要1个”的错。

两种修复方法

方法1:去掉as_index=False,处理索引后赋值

df['ma'] = df.groupby('country')['gdp'].rolling(3, min_periods=1).mean().reset_index(drop=True)

去掉as_index=False后,groupby的结果会把country作为索引的一部分,计算完移动均值后用reset_index(drop=True)去掉多余索引,得到纯数值的Series,就能顺利赋值给新列。

方法2:用transform直接匹配原索引(更推荐)

df['ma'] = df.groupby('country')['gdp'].transform(lambda x: x.rolling(3, min_periods=1).mean())

transform会自动把分组内的计算结果对应回原DataFrame的每一行,不需要手动处理索引,代码更简洁直观。

修复后运行,你会得到正确的移动均值列:

country  year  gdp        ma
0      US  1990  1.2  1.200000
1      US  1991  1.4  1.300000
2      US  1992  1.7  1.433333
3      US  1993  2.1  1.733333
4      US  1994  2.3  2.033333
5      US  1995  1.9  2.100000
6      FR  1990  4.1  4.100000
7      FR  1991  4.6  4.350000
8      FR  1992  4.3  4.333333
9      FR  1993  4.4  4.433333

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:16:12