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

使用Pandas DataFrame标记列名时出现维度不匹配错误

解决pd.DataFrame创建时维度不匹配的问题

问题场景

我有一个形状为(31,1)的数组数据:

array([-4.92986060e-01, -3.26816435e-01, -2.81509125e-02, -5.50369198e-02,
   -4.78291735e-01, -3.77629735e-01,  2.56439110e-01, -7.80681558e-02,
    1.16469866e-01,  3.85537902e-02,  1.45576290e-02,  1.30638731e-01,
   -1.38000533e-01,  1.59521248e-02, -5.90236009e+00, -1.93493371e+00,
    9.29390668e-02,  1.58132616e-01, -2.37706974e-01,  4.10766116e-01,
   -1.99106536e-02,  2.91439759e-03, -1.34659982e+00, -8.83233098e-02,
   -1.19043573e-01, -1.98791078e-02,  2.18003752e-03,  7.97191732e-03,
    5.01870085e-02,  8.15185865e-02,  3.56969073e-02])

尝试用pd.DataFrame为数据添加列名,代码如下:

df = pd.DataFrame(df, columns=[feature_names])

运行时抛出维度不匹配错误:

ValueError: Shape of passed values is (31, 1), indices imply (31, 31)

问题原因

报错核心是columns参数的传参错误:feature_names是长度为31的列表,你又用外层方括号包裹成二维列表,Pandas会将其识别为31个列名,但你的数组仅包含1列,导致维度不匹配。

解决方案

根据实际需求分两种情况处理:

情况1:为单列数据设置一个列名

如果feature_names是单个字符串(如"single_feature"),直接去掉外层方括号:

df = pd.DataFrame(df, columns=feature_names)

若feature_names是长度为1的列表(如["single_feature"]),直接传入即可:

df = pd.DataFrame(df, columns=feature_names)

情况2:将数组元素对应到31个列(转置数据)

如果需要让数组的31个值分别对应31个列的单一行数据,需先将数组重塑为(1,31)的形状:

# 方法1:使用转置
df = pd.DataFrame(df.T, columns=feature_names)
# 方法2:重塑数组形状
df = pd.DataFrame(df.reshape(1, -1), columns=feature_names)

内容的提问来源于stack exchange,提问作者Vui Chee Chang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:05:46