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

Pandas创建多层索引DataFrame报错:ValueError: all arrays must be same length

问题排查与修正

错误原因

你的代码存在两个核心问题:

  • 随机数维度不匹配:np.random.randint(0, high=9)仅生成单个整数,但你的DataFrame需要对应索引行数的2列数据,数据维度和索引、列数完全不匹配。
  • 多层索引定义错误:[[1, 2, 3], ['a', 'b']]是两个长度不一致的列表,Pandas无法直接解析为合法的多层索引,同时这也会导致索引行数和数据行数不匹配。

修正后的代码

如果你需要外层索引为1、2、3,每个外层索引对应内层索引a、b(共6行数据),可以这样写:

import pandas as pd
import numpy as np

# 生成6行2列的0-8随机整数
data = np.random.randint(0, 9, size=(6, 2))
# 生成笛卡尔积形式的多层索引
multi_index = pd.MultiIndex.from_product([[1, 2, 3], ['a', 'b']], names=['外层', '内层'])
# 创建DataFrame
df = pd.DataFrame(data, index=multi_index, columns=['A', 'B'])

关键说明

  • np.random.randint(0, 9, size=(6, 2)):明确指定生成6行2列的随机数,和索引行数、列数完全对应。
  • pd.MultiIndex.from_product:生成两个层级的笛卡尔积索引,确保索引行数和数据行数一致。

如果你的需求是外层索引和内层索引一一配对(比如(1,a)、(2,b)、(3,c)),可以调整索引列表长度一致,同时匹配数据行数:

df = pd.DataFrame(np.random.randint(0, 9, size=(3, 2)), index=[[1,2,3], ['a','b','c']], columns=['A','B'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:40:22