【发布时间】:2020-10-06 11:30:16
【问题描述】:
我想导入一个 json 文件(尽管它看起来更像是一个普通的 txt 文件),其中每一行都是一个小的(四个数据对)json 文件。 每个 json 文件都应该是 pandas Dataframe 中的一行,有四列。
例子:
# Inside "data.json"
{"time": "2020-07-01:14:27:16.0000", "id": "m38dk117", "position": "66277", "active_current": "17.1"}
{"time": "2020-07-01:14:27:16.0000", "id": "m38dk118", "position": "3277", "active_current": "0.0"}
...
{"time": "2020-07-30:14:27:16.0000", "id": "m38dk006", "position": "73117", "active_current": "0.0"}
data.json 大约 30MB 大,包含大约 250.000 行 - 每天
data.json 大约 900MB 大,包含大约 750 万行 - 每个月
以下代码 sn-p 确实可以完成这项工作,但速度太慢了。 也欢迎熊猫的替代选择,我不仅限于熊猫。但缺乏处理大量日志数据的经验。
命题:
import pandas as pd
import json
df = pd.DataFrame()
with open('data.json', 'r') as stacked_json_file:
row_idx = -1
for json_file in stacked_json_file:
row_idx += 1
df = df.append(pd.DataFrame(json.loads(json_file), index = [row_idx]))
这可能是因为 pd.DataFrame.append 没有就地追加而变慢吗?
【问题讨论】:
-
尝试通过read_json df = pd.read_json('data.json') 直接将 json 读取到 pandas
-
附带说明:您必须使用的数据格式非常低效。一个(压缩的)csv 文件可以节省大量的空间和时间来导入。我知道它通常不在我们手中,但我会考虑要求数据源更改格式。
标签: python json pandas dataframe