如何将多个数组输出添加到pandas DataFrame并解决值报错
问题原因
你触发ValueError: Wrong number of items passed 6, placement implies 1报错的核心原因是:pandas默认会对传入的二维numpy数组做按列拆分的广播逻辑,当你尝试把二维数组直接赋值给单列时,pandas会把每行的N个元素识别为N个独立的列值,和你指定的1个列位置不匹配,就会抛出该错误。
可行实现方案
以下代码可以直接生成你需要的DataFrame结构,索引默认从0开始自增,Value列存储每一行对应的完整数组:
import pandas as pd import numpy as np # 请将下方的arr替换为你实际概率计算得到的二维数组 arr = np.array([ [4.88915104e-308, 1.43405787e-307, 2.20709896e-308, 3.08740254e-307, 1.68481486e-307, 1.72126050e-307], [1.64744295e-004, 8.66082462e-004, 7.66062761e-005, 1.85613403e-003, 9.68750380e-004, 8.22260750e-004], [6.18964539e-004, 1.85605606e-003, 2.71300593e-004, 3.86232296e-003, 2.01921300e-003, 2.18304351e-003] ]) # 核心逻辑:逐行提取数组元素存入列表,阻断pandas的自动拆分逻辑 df = pd.DataFrame({ "Value": [row for row in arr] })
可选调整
如果你需要Value列存储的是原生numpy数组而非Python列表,可以在构造时显式指定object类型:
df = pd.DataFrame({ "Value": pd.Series([row for row in arr], dtype=object) })
避坑提示
不要使用类似pd.DataFrame(arr, columns=["Value"])或者df["Value"] = arr的写法,这类写法会直接传入二维数组,必然触发你遇到的拆分报错。
内容的提问来源于stack exchange,提问作者Noob Coder
相关产品推荐
相关产品推荐

