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

使用pd.read_json转换JSON数组列表为DataFrame报错,求高效解法

解决方法:直接用pd.DataFrame()构造,比read_json更高效

哎,这个坑我踩过!pd.read_json()的设计初衷是处理JSON格式的字符串、文件路径或者文件对象,你直接传Python列表,它会误以为你给的是文件路径,自然就报ValueError了。

不用遍历列表,有两个高效的方法,优先推荐第一种:

方法1:直接用pd.DataFrame()构造(最优解)

因为你的列表里每个元素都是字典,而pandas.DataFrame()可以直接接收这种字典组成的列表作为输入,内部是矢量化处理,性能比遍历强太多:

import pandas as pd

# 注意:你的原始JSON数组里用了"foo"=1,这是语法错误,要改成冒号":"
my_json = [{"foo": 1}, {"foo": 2}, {"foo": 3}]
df = pd.DataFrame(my_json)

运行后就能得到你想要的DataFrame,列名就是foo,行对应各个值。

方法2:先把列表转成JSON字符串再用read_json

如果你非要用pd.read_json()的话,可以借助json.dumps()把Python序列转成JSON格式的字符串,再传给read_json:

import pandas as pd
import json

my_json = [{"foo": 1}, {"foo": 2}, {"foo": 3}]
# 把Python列表转成JSON字符串
json_str = json.dumps(my_json)
df = pd.read_json(json_str)

不过这个方法多了一步序列化操作,性能不如方法1,所以除非有特殊需求,不然优先选方法1。

另外提醒一下:你写的{"foo"=1}是错误的JSON语法,正确的键值对应该用冒号:分隔,也就是{"foo": 1},否则不管用哪种方法都会报错哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:34:44