You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用列形式NumPy数组创建Pandas DataFrame报错,是否支持该格式?

关于用列式NumPy数组创建Pandas DataFrame的问题

当然支持你说的这种「每个子数组代表一列数据」的格式啦,只是你需要调整下创建DataFrame的方式——默认的构造逻辑和你预期的不一样才导致了报错。

为什么会报错?

你第二个示例里的data是一个2行3列的NumPy数组:

data = np.array([[1,2,2] , [1,5,3]])
# 数组形状为 (2, 3):2行,每行包含3个元素

而你指定了columns=['1','2'](共2列),Pandas默认会把输入数组的每一行作为DataFrame的一行。这就出现了矛盾:每行有3个元素,却要放到2列里,自然就抛出ValueError: Wrong number of items passed 3, placement implies 2的错误了。

两种解决方法

方法1:转置你的NumPy数组

把数组的行和列互换,让原来的列变成行,数组形状从(2,3)转为(3,2),就能和columns的数量匹配:

import numpy as np
import pandas as pd

columns = ['1','2']
data = np.array([[1,2,2] , [1,5,3]])
df_1 = pd.DataFrame(data.T, columns=columns)  # 用.T实现数组转置
print(df_1)

输出结果:

1  2
0  1  1
1  2  5
2  2  3

方法2:直接按列映射创建

更直观的方式是把每个子数组和对应的列名绑定,用字典形式传入pd.DataFrame(),明确告诉Pandas「每个数组对应一列」:

import numpy as np
import pandas as pd

columns = ['1','2']
data = np.array([[1,2,2] , [1,5,3]])
df_1 = pd.DataFrame({col: arr for col, arr in zip(columns, data)})
print(df_1)

得到的结果和上面完全一致,这种写法能直接体现你的数据结构意图,可读性更强。

总结

Pandas不是只能用「每行代表DataFrame一行」的格式,只要你明确告诉它数据的结构,不管是行式还是列式都能处理。上面两种方法都能帮你用列式的NumPy数组创建出正确的DataFrame。

内容的提问来源于stack exchange,提问作者blue-sky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:15:09