Pandas创建DataFrame报错ValueError:使用标量值需传入索引如何解决?
问题修复方案
问题原因
不是Pandas源码问题,是版本差异导致的行为变化。旧版Pandas会自动为全标量值的字典生成默认索引,但新版Pandas要求你显式指定索引——因为它无法判断你是要把字典的键作为列名还是行索引。
三种修复方法
方法1:将字典包装成列表(推荐,最直观)
把字典放到列表里,明确告诉Pandas这是一行数据:
import pandas students = {"Adi": 32, "Ron" : 64, "Jonny": 34} student_dataframe = pandas.DataFrame([students]) print(student_dataframe)
输出:
Adi Ron Jonny 0 32 64 34
方法2:显式指定index参数
直接给DataFrame构造函数传index参数,指定索引长度:
import pandas students = {"Adi": 32, "Ron" : 64, "Jonny": 34} student_dataframe = pandas.DataFrame(students, index=[0]) print(student_dataframe)
输出和方法1一致。
方法3:将键作为行索引(如果你的需求是这样)
如果想把学生名字作为行索引、分数作为单列,可以用from_dict方法:
import pandas students = {"Adi": 32, "Ron" : 64, "Jonny": 34} student_dataframe = pandas.DataFrame.from_dict(students, orient='index', columns=['Score']) print(student_dataframe)
输出:
Score Adi 32 Ron 64 Jonny 34
为什么之前代码正常?
旧版Pandas(比如v0.23.x及更早)会自动为全标量字典创建一个[0]的默认索引,新版Pandas(v1.0+)为了避免歧义,强制要求显式声明索引,所以现在运行会报错。
内容的提问来源于stack exchange,提问作者Hintal Gal
相关产品推荐
相关产品推荐

