You need to enable JavaScript to run this app. ValueError: Must pass 2-d input Pandas DataFrame构建报错如何解决
优惠活动
大模型
产品
解决方案
定价
更多

ValueError: Must pass 2-d input Pandas DataFrame构建报错如何解决

代码问题分析
  • 数组构造逻辑错误:三个列表直接相加是纵向拼接为长度150的一维数组,reshape为(50,3)后每一行的元素并不对应「原随机数、平方、平方根」的组合,数据完全错位。
  • 构造DataFrame时多套了一层方括号:[whole2[:,1:]]会将原本shape为(50,2)的二维数组包裹为shape为(1,50,2)的三维数组,不符合Pandas要求的二维输入规则,是触发报错的直接原因。
  • 列参数和需求不匹配:你设定原随机数为行索引,不需要将Number设为列字段,且传入的有效数据只有2列,但指定了3个列名,维度不匹配。
  • 随机数范围错误:原代码range(1, 100)是左闭右开规则,取不到100,不符合你要求的1-100取值范围。
正确修改方案

基于原有逻辑修正版本

import random
import math
import numpy as np
import pandas as pd
y = random.sample(range(1, 101), 50) # 修正取值范围到1-100
y1 = [f**2 for f in y]
y2 = [round(math.sqrt(f)) for f in y]
# 按列拼接三个列表,每行对应[原数, 平方, 平方根],避免数据错位
whole2 = np.column_stack([y, y1, y2])
# 去掉多余的外层方括号,列名匹配实际字段数量
df = pd.DataFrame(whole2[:,1:], index=whole2[:,0], columns=['Square','Square Root'])

更简洁的无Numpy版本

import random
import math
import pandas as pd
y = random.sample(range(1, 101), 50)
df = pd.DataFrame(
    data = [{'Square': f**2, 'Square Root': round(math.sqrt(f))} for f in y],
    index = y
)

内容的提问来源于stack exchange,提问作者NewtonL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 19:45:07