You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:18:00