使用index、X、y创建DataFrame时遇ValueError维度错误求助
解决创建嵌套列表DataFrame的维度错误
问题背景
需要用index、X、y变量创建目标结构的DataFrame,但运行代码时抛出维度错误:
Length of index, X, Y: 6 6 6 ValueError: Data must be 1-dimensional, got ndarray of shape (6, 1) instead
错误代码:
import pandas as pd import numpy as np df_idx1 = [[3], [4], [5], [6], [7], [8]] X1 = [ [[10], [20], [30]], [[20], [30], [40]], [[30], [40], [50]], [[40], [50], [60]], [[50], [60], [70]], [[60], [70], [80]] ] y1 = [[[40]], [[50]], [[60]], [[70]], [[80]], [[90]]] print("Length index, X, Y: ", len(df_idx1), len(X1), len(y1)) print("df_idx1",df_idx1) print("X1",X1) print("y1",y1) exdf1 = pd.DataFrame(data={"X":np.array(X1),"y":np.array(y1)},index=df_idx1)
错误原因
- Index维度问题:
df_idx1是二维列表(每个元素是单元素子列表),pandas要求索引为一维结构 - 数据列维度问题:
np.array(X1)生成(6,3,1)维度的数组,np.array(y1)生成(6,1,1)维度的数组,而DataFrame的列需要是一维结构(每个元素为独立的嵌套列表对象)
修正方案
将索引转换为一维列表,同时直接使用原嵌套列表作为列数据(避免numpy数组的多维度干扰):
import pandas as pd import numpy as np df_idx1 = [[3], [4], [5], [6], [7], [8]] X1 = [ [[10], [20], [30]], [[20], [30], [40]], [[30], [40], [50]], [[40], [50], [60]], [[50], [60], [70]], [[60], [70], [80]] ] y1 = [[[40]], [[50]], [[60]], [[70]], [[80]], [[90]]] # 处理索引为一维列表 processed_index = [idx[0] for idx in df_idx1] # 直接使用原嵌套列表构造DataFrame exdf1 = pd.DataFrame(data={"X": X1, "y": y1}, index=processed_index) print(exdf1)
输出结果
X y 3 [[10], [20], [30]] [[40]] 4 [[20], [30], [40]] [[50]] 5 [[30], [40], [50]] [[60]] 6 [[40], [50], [60]] [[70]] 7 [[50], [60], [70]] [[80]] 8 [[60], [70], [80]] [[90]]
内容的提问来源于stack exchange,提问作者Mainland
相关产品推荐
相关产品推荐

