如何将data.db格式的JSON行数据导入pandas DataFrame?
正确导入每行独立JSON的文件到Pandas DataFrame
你的问题根源在于用逗号分割每行内容——这种方式会把JSON的键(也就是你说的"字段标签")和值拆得七零八落,自然会混进表格里。其实你的文件是每行一个完整的JSON对象,用专门的JSON解析方法就能完美解决。
这里给你两种简单可行的方案:
方案一:用Pandas自带的read_json(最简便)
Pandas的read_json方法专门支持这种每行一个JSON的格式,只需要加上lines=True参数就行:
import pandas as pd file_path = "path_to_file/data.db" # lines=True 表示每行是独立的JSON对象 df = pd.read_json(file_path, lines=True) # 查看前几行验证结果 print(df.head())
这个方法会自动把每个JSON里的键作为DataFrame的列名,对应的值填充到行中,完全不会出现字段标签混进表格的问题。
方案二:手动逐行解析JSON(适合需要自定义处理的场景)
如果你需要在导入前对数据做一些自定义处理,可以手动逐行读取并解析JSON,再转成DataFrame:
import pandas as pd import json file_path = "path_to_file/data.db" parsed_data = [] with open(file_path, 'r') as f: for line in f: # 去除每行首尾的空白字符,解析为JSON字典 json_dict = json.loads(line.strip()) parsed_data.append(json_dict) # 把字典列表转成DataFrame df = pd.DataFrame(parsed_data) print(df.head())
为什么你之前的方法不行?
你之前用x.split(',')会把类似"hostname":"136.243.73.66"这样的键值对拆成["\"hostname\"", "\"136.243.73.66\""]两个独立元素,最终得到的是一堆零散的字符串,完全不是结构化的表格数据,这才导致字段标签混入了表格内容。
内容的提问来源于stack exchange,提问作者Wehl Berker
相关产品推荐
相关产品推荐

