如何将含二维数组值的字典转换为Pandas DataFrame?
解决字典转Pandas DataFrame时的ValueError问题
问题场景
我有一个以字符串为键、二维数组为值的字典,示例代码如下:
import numpy as np import pandas as pd dic = {'x': np.array([[10], [27], [12], [132]]), 'y': np.array([[-39], [23], [42], [98]]), 'z': np.array([[-100], [-123], [92], [88.2]])}
希望将其转换为如下格式的Pandas DataFrame:
iter x y z 0 10 -39 -100 1 27 23 -123 2 12 42 92 3 132 98 88.2
执行df = pd.DataFrame.from_dict(dic)时,触发错误:
ValueError: Per-column arrays must each be 1-dimensional
错误原因
字典中每个值都是形状为(4,1)的二维数组,但pd.DataFrame.from_dict要求作为列的数组必须是一维结构,维度不匹配导致报错。
解决方案
提供两种简洁的处理方式:
方式一:展平二维数组为一维
遍历字典,用numpy的ravel()方法将每个二维数组转成一维,再传入from_dict:
# 处理字典,展平所有数组 processed_dic = {key: val.ravel() for key, val in dic.items()} df = pd.DataFrame.from_dict(processed_dic) # 设置索引名称 df.index.name = 'iter'
方式二:直接使用DataFrame构造函数
跳过from_dict,直接将字典传入pd.DataFrame构造函数,它会自动适配二维数组的维度:
df = pd.DataFrame(dic) df.index.name = 'iter'
两种方式都能生成目标格式的DataFrame。
内容的提问来源于stack exchange,提问作者Murilo
相关产品推荐
相关产品推荐

