将3个shape为(6,1)的数组合并为3列DataFrame,reshape报错如何解决?
错误原因
你报错的核心是传入数据的维度和指定列数不匹配:
你将3个shape为(6,1)的数组堆叠后reshape为(3,6),得到的是3行6列的数组,但你指定的columns参数只有3个字段,pandas默认传入数据的每一行对应一条样本、列数需要和字段数一致,自然触发维度不匹配报错。
而且就算你调整列数凑过报错,这么reshape得到的数据顺序也是错的:你是把三个数组整体堆叠后拉平,无法实现「每个数组对应一列」的需求。
正确实现方案
方案1:直接传字典生成DataFrame(最简便)
用字典指定列名和对应数据,搭配flatten()把(6,1)的二维数组转为一维数组即可:
df = pd.DataFrame({ 'Sigma': array_1.flatten(), 'x': array_2.flatten(), 'y': array_3.flatten() })
方案2:先按列拼接numpy数组再转DataFrame
如果需要先处理合并后的数组,可以用np.column_stack直接按列拼接三个数组,得到(6,3)的二维数组(6行3列,刚好对应6条样本3个字段),再转DataFrame:
# 按列拼接三个数组,得到shape为(6,3)的结果 arr = np.column_stack([array_1, array_2, array_3]) df = pd.DataFrame(data=arr, columns=['Sigma', 'x', 'y'])
内容的提问来源于stack exchange,提问作者Luckasino
相关产品推荐
相关产品推荐

