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

Python pandas创建DataFrame报错arrays must all be same length求助

问题根因

你遇到的报错是因为构造pd.DataFrame时传入的monthly_all字典中,不同key对应的数组长度不一致,pandas无法将不等长的数组合并为同一张表。
出现长度不一致的原因是你对每个区域数据按月份分组求和时,若某区域的verif数据存在月份缺失,分组得到的monthly行数就会少于其他区域,最终存入monthly_all的percent数组长度就和其他区域不同。

排查方法

你可以在循环内的monthly_all[region] = monthly.percent.values之前添加一行调试代码,确认各区域的数组长度:

print(f"区域{region}的月份数:{len(monthly.percent.values)}")

运行后即可快速定位是哪个区域的月份数据存在缺失。

修复方案

方案1:固定分组的月份范围

将月份字段设置为固定范围的分类类型,强制groupby时保留所有需要的月份,即使没有对应数据也会生成空值行,保证所有区域的数组长度一致:

# 替换原代码中的verif['month'] = verif.index.month
verif['month'] = pd.Categorical(verif.index.month, categories=range(1, 10), ordered=True)
# 分组时添加observed=False参数保留所有分类
monthly = verif.groupby('month', observed=False).sum()

方案2:用concat合并不等长Series

如果允许表中存在空值,也可以先将每个区域的数组转为Series再合并,自动补全缺失位置为NaN:

# 替换原代码中的monthly_all_df = pd.DataFrame(monthly_all)-1
monthly_all_df = pd.concat(
    [pd.Series(values, name=region) for region, values in monthly_all.items()], 
    axis=1
) - 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:00:02