pandas加载JSON生成DataFrame出现arrays must all be the same length错误求助
错误原因
你收到的arrays must all be the same length报错,是因为加载后的JSON根节点包含columns、index、data三个长度不相等的数组,直接传入pd.DataFrame()会默认把根节点的三个键当做DataFrame的列,对应值长度不匹配就会触发报错。你需要的实际航次数据嵌套在data字段的第二层结构中,需要先提取再转换。
另外要注意Windows本地路径建议加r前缀标记为原始字符串,避免\v这类字符被识别为转义符,导致路径读取失败的额外问题。
正确实现代码
import os import json import pandas as pd # 路径加r前缀避免转义问题 os.chdir(r'M:\JT\Voyages Data') with open(r'M:\JT\Voyages Data\Data.json', 'r', encoding='utf-8') as f: raw_json = json.load(f) # 提取嵌套的航次字典列表 voyage_records = [] for data_item in raw_json['data']: # data_item结构为 [总记录数值, 航次字典列表],展开航次列表合并到总列表 voyage_records.extend(data_item[1]) # 转换为DataFrame df = pd.DataFrame(voyage_records) # 验证转换结果 print(df.head())
可选扩展
如果需要把外层的公共字段(比如总数量total、站点site)合并到每一行的记录中,可以额外添加以下代码:
# 按需提取外层字段 total_cnt = raw_json['data'][0][0] site = raw_json['columns'][2] df['total_cnt'] = total_cnt df['site'] = site
内容的提问来源于stack exchange,提问作者Josh21193
相关产品推荐
相关产品推荐

