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

Python List转Dataframe报错:ValueError: Must pass 2-d input. shape=(9,5,6)

解决方案:三维列表转DataFrame报错处理

错误原因

Pandas DataFrame仅支持二维输入结构(行×列),你当前的输入是三维数组(shape=(9,5,6)),不符合要求因此报错。

针对不同数据结构的解决方法

根据你的三维数据的实际含义,选择对应处理方式:

1. 合并多个二维子表为一个大DataFrame

如果你的三维数据是9个独立的二维子表(每个子表5行6列),可以将每个子表转为DataFrame后合并:

import pandas as pd

# 假设你的三维列表名为data_3d
df_collection = [pd.DataFrame(sub_table) for sub_table in data_3d]
final_df = pd.concat(df_collection, ignore_index=True)

2. 扁平化三维数据为二维结构

如果需要把所有内层的6值组作为行,直接展开成二维列表后转DataFrame:

import pandas as pd

# 扁平化:将9×5×6的结构转为(9*5)×6的二维结构
flattened_data = [row for sub_table in data_3d for row in sub_table]
df = pd.DataFrame(flattened_data)

3. 保留层级信息(添加分组标识)

如果需要保留原三维结构的第一层作为分组标记,可额外添加分组列:

import pandas as pd

flattened_data = []
# 遍历每个分组,给每行添加分组编号
for group_id, sub_table in enumerate(data_3d):
    for row in sub_table:
        flattened_data.append([group_id] + row)

# 自定义列名,第一列为分组编号,后续为原数据列
df = pd.DataFrame(flattened_data, columns=["Group"] + [f"Column_{i}" for i in range(6)])

额外提示

如果不确定数据的具体结构,可以先打印部分子元素确认:

# 打印第一个二维子表的结构
print(data_3d[0])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 22:44:59