计算3年滚动平均触发ValueError:Columns must be same length as key
问题分析与解决
核心错误原因
你代码里的关键错误是列名未加引号:错误栈里的第4行写的是counts[t_average] = t.rolling(2).sum(),这里的t_average没有用单/双引号包裹,导致Pandas误将其当作数组/列索引变量处理,而非你要创建的新列名。这种情况下,Pandas会尝试批量设置多列,但你的值是单列的Series,长度不匹配,因此触发ValueError: Columns must be same length as key。
另外你提到要计算3年滚动平均,但当前代码里rolling(2)设置的窗口大小是2,这也需要根据你的时间周期调整。
修正后的代码
# 分组统计数量 counts = dfen.groupby(['From date', 'Policy category 1']).size().reset_index(name='counts') # 计算3年滚动平均(window=3需匹配你的时间粒度,若按年分组则对应3年) counts['t_average'] = counts['counts'].rolling(window=3, center=True).mean()
补充说明
- 若需要居中滚动平均,务必在
rolling()里加上center=True参数,默认是向前滚动计算。 - 滚动窗口的
window值要匹配时间粒度:比如From date按年分组时,window=3对应3年;若按月分组且要计算3年,需设置window=36,以此类推。
内容的提问来源于stack exchange,提问作者Isabel Parras Pancorbo
相关产品推荐
相关产品推荐

