如何将usnparser输出的类JSON数据转换为pandas DataFrame?
嘿,我来帮你搞定这个问题!你的数据其实是JSON Lines格式(也就是每行一个独立的JSON对象),而不是标准的包裹在数组里的JSON结构,这就是为啥你之前的方法没成功~下面给你两种靠谱的解决方案:
解决方法
方法1:直接用pandas读取(最简单高效)
pandas的read_json原生支持JSON Lines格式,只需要加一个lines=True参数就能完美适配你的数据:
import pandas as pd # 替换成你的实际文件路径 file_path = "your_usnparser_output.json" df = pd.read_json(file_path, lines=True) print(df)
执行后,每行的JSON对象会自动转换成DataFrame的一行,字段对应列,完全符合你的需求。
方法2:结合json模块手动处理(适合需要中间自定义操作的场景)
如果你需要在读取过程中做一些额外处理(比如过滤特定行、修改字段值),可以逐行读取文件,用json模块解析每个对象后再转成DataFrame:
import pandas as pd import json data_list = [] file_path = "your_usnparser_output.json" # 逐行读取并解析JSON对象 with open(file_path, 'r') as f: for line in f: # 跳过可能存在的空行 if line.strip(): json_obj = json.loads(line) data_list.append(json_obj) # 将列表转成DataFrame df = pd.DataFrame(data_list) print(df)
为啥你之前的方法行不通?
你之前使用orient='records'时,pandas期望的是外层包裹数组的JSON数据(比如[{"key1":"val1"}, {"key1":"val2"}]),但你的数据是每行一个独立的JSON对象,没有外层数组结构,所以直接用orient='records'会报错或者无法正确解析数据。而lines=True参数就是明确告诉pandas:“这个文件里每行都是一个独立的JSON对象”,刚好匹配你的数据格式~
内容的提问来源于stack exchange,提问作者johnnyb
相关产品推荐
相关产品推荐

