如何将含不同长度数组的JSON对象转为DataFrame?解决长度不匹配报错
解决"All arrays must be of the same length"错误的方案
错误原因
你调用的API返回的JSON是嵌套结构的字典,顶层不同字段对应的数据长度不一致:比如indicator是单个元数据对象,data却是包含数百条记录的数组。直接用pd.DataFrame(resp.json())会让pandas尝试把这些长度不同的序列拼成表格,因此触发长度不匹配的错误。
解决步骤
步骤1:提取核心数据数组
API返回的实际业务数据都存在data字段里,先单独提取这个数组:
import pandas as pd import requests resp = requests.get("https://unstats.un.org/SDGAPI/v1/sdg/Indicator/Data?indicator=7.2.1") # 提取包含所有数据条目的数组 raw_data = resp.json()['data']
步骤2:转换为DataFrame
用提取出的raw_data直接创建DataFrame:
df = pd.DataFrame(raw_data)
可选:扁平化嵌套JSON
如果数据里存在嵌套对象(比如每个条目里的country、indicator字段),可以用json_normalize把嵌套结构展开成扁平列:
from pandas import json_normalize df = json_normalize(raw_data)
这样就能正确生成DataFrame,不会再触发长度不匹配的错误。
内容的提问来源于stack exchange,提问作者user032020
相关产品推荐
相关产品推荐

