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

不使用json模块读取大型JSON为Pandas DataFrame报错求助

解决Pandas读取墨尔本共享单车JSON文件的报错问题

嘿,我明白你现在的困扰——作为Python和JSON新手,碰到这种报错确实头疼,而且还不能用json模块,更让人挠头。先别慌,咱们一步步来解决这个问题。

首先,你遇到的ValueError: Mixing dicts with non-Series may lead to ambiguous ordering报错,大概率是因为你的JSON文件是JSON Lines格式(也就是每行一个独立的JSON对象),而你用默认的pd.read_json参数去解析,才会出现混合类型的不匹配问题。

为什么之前的方法不行?

  • 第一种直接调用pd.read_json的方式:默认情况下,pandas会把整个文件当成一个完整的JSON对象(比如一个大数组或大字典)来解析,但你的文件是每行一个单独的JSON记录,这种结构不匹配就会触发报错。
  • 第二种拼接字符串的方式:你把所有行拼在一起后,得到的是多个JSON对象直接连在一起的字符串,这根本不是合法的JSON格式(合法的数组需要用[]包裹,对象之间用逗号分隔),所以自然也解析失败。

正确的解决方案(无需json模块)

既然你的文件是JSON Lines格式,只需要给pd.read_json加一个lines=True参数,就能正确识别每行的独立JSON对象了。然后再用json_normalize扁平化数据就行,完整代码如下:

import pandas as pd
from pandas.io.json import json_normalize

# 关键:添加lines=True参数读取JSON Lines格式的文件
mbs = pd.read_json('Melbourne_bike_share.json', lines=True)

# 扁平化嵌套结构
df = json_normalize(mbs)

# 查看首行验证结果
print(df.head(1))

补充说明

如果你的pandas版本是1.0.0及以上,json_normalize已经移到pandas的主模块里了,可以直接用pd.json_normalize(mbs)替代from pandas.io.json import json_normalize,效果是完全一致的。

这个方法应该能解决你的问题,之后你就能得到预期的扁平化DataFrame了。

内容的提问来源于stack exchange,提问作者AJ AJ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:14:06