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
相关产品推荐
相关产品推荐

