You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Pandas read_json函数转换Scrapy生成的JSON Lines文件?

解决Pandas读取JSON Lines格式文件的问题

我之前也踩过这个坑!JSON Lines(每行一条独立JSON记录)的格式和Pandas默认预期的JSON结构不一样,用orient='index'完全找错方向了——那个参数是给索引映射列值的嵌套结构用的,根本不适合JSON Lines。

正确的解决方法:用lines=True参数

Pandas专门提供了lines=True参数来处理每行一个JSON对象的情况,直接指定这个参数就能正确解析你的input.json

import pandas as pd

# 读取JSON Lines格式的文件
df = pd.read_json('input.json', lines=True)

举个实际例子,假设你的input.json内容是:

{"id": 1, "title": "Scrapy入门", "author": "reyman64"}
{"id": 2, "title": "Pandas技巧", "author": "data_dev"}

运行上面的代码后,生成的DataFrame会是标准的表格结构:

idtitleauthor
1Scrapy入门reyman64
2Pandas技巧data_dev

为什么orient='index'不行?

再帮你理清逻辑:orient='index'对应的是这种嵌套结构的JSON:

{
  "row1": {"col1": "val1", "col2": "val2"},
  "row2": {"col1": "val3", "col2": "val4"}
}

它是外层用索引键映射每行数据,和JSON Lines的“每行独立JSON对象”完全是两种格式,所以用这个参数自然会得到不符合预期的结果。

另外,如果你的JSON Lines里有部分行缺失字段,Pandas也会自动用NaN填充对应的单元格,完全不用额外处理~

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

火山引擎 最新活动