使用pd.read_json报错:If using all scalar values must pass index
解决Pandas报错:If using all scalar values must pass index
问题原因
你当前的JSON是单个键值对对象(每个字段都是标量值),而pd.read_json()默认期望处理JSON数组(比如[{"name": "sani", ...}])或者每行一个JSON对象的文本格式。直接传入单个对象时,Pandas无法确定如何生成DataFrame的行索引,所以抛出这个错误。你尝试加index=0没用,因为pd.read_json()本身没有index参数。
三种可行的解决方法
方法1:把JSON改成数组格式
直接在原始JSON字符串外层加[],让它变成数组结构:
import pandas as pd data = '[{"name": "sani", "address": "Czech", "Age": "10", "Gender": "Female"}]' df = pd.read_json(data) print(df)
方法2:先解析JSON为字典,再创建DataFrame
用json模块先把字符串转成字典,再通过pd.DataFrame生成表格:
import pandas as pd import json data = '{"name": "sani", "address": "Czech", "Age": "10", "Gender": "Female"}' data_dict = json.loads(data) # 方式A:把字典包装成列表传入 df = pd.DataFrame([data_dict]) # 方式B:用from_dict指定方向参数 df = pd.DataFrame.from_dict(data_dict, orient='index').T
方法3:使用pd.json_normalize(推荐)
这个方法专门处理单个或嵌套JSON对象,生成DataFrame更灵活:
import pandas as pd import json data = '{"name": "sani", "address": "Czech", "Age": "10", "Gender": "Female"}' data_dict = json.loads(data) df = pd.json_normalize(data_dict)
验证结果
以上方法都会生成如下结构的DataFrame:
name address Age Gender 0 sani Czech 10 Female
内容的提问来源于stack exchange,提问作者Sanijaja
相关产品推荐
相关产品推荐

