python - 使用具有许多不同键的 R 巨大 json 进行解析
问题描述
背景
我有一个相对简单但巨大的 (~GB) json 文件,其结构如下
[{"a":92,"b":{"2019-01-01T00:00:14":102,"2019-01-01T00:01:15":123,...}},
{"a":20,"b":{"2019-01-01T01:00:21":104,"2019-01-01T01:01:25":321,...}}]
嵌套结构中的句点 ... 表示该元素具有可变数量的条目,最多约 60 个。
最终,我希望能够使用以下两种结构中的任何一种来制作 R-data.frame(首选选项 1)
选项1
a, Time, Value
92, "2019-01-01T00:00:14", 102
92, "2019-01-01T00:01:15", 123
20, "2019-01-01T01:00:21", 104
20, "2019-01-01T01:01:25", 321
选项 2
a, Time_1, Value_1, Time_2, Value_2, ...
92, "2019-01-01T00:00:14", 102, "2019-01-01T00:01:15", 123
20, "2019-01-01T01:00:21", 104, "2019-01-01T01:01:25", 321
在 R 中完成操作并不那么重要。我只关心最终数据是指定格式之一。
我是怎么想的
我已经能够编写一个 R 程序(使用 jsonlite 和 data.table)将 json 转换为具有第一个结构的 data.frame。然而,这种技术适用于高达 200MB 左右的文件。对于更大的文件,它只需要大量的时间。
一种方法可以是直接修改json对象的结构,有点像可以使用xslt来改变xml对象的结构。但我不知道有这样的工具。另一种方法是以某种方式指定 json 的结构,以便解析器提取信息。但我也不知道该怎么做。
此外,我刚刚找到了 R-package jqr,这听起来很有希望,但我不太明白如何使用它https://cran.r-project.org/web/packages/jqr/jqr.pdf
问题
我的主要问题是
- 文件真的很大
- 嵌套结构的键不是“唯一的”,因为它们是时间戳。因此,“标准”解析器会将每个唯一值转换为数据框的一列,其中键为列名,值对应的值,可能会生成很多列。
解决方案
推荐阅读
- javascript - Axios NPM 未获取数据 express.js
- c# - OpenCvSharp 的 BRISQUE 实现
- javascript - 尝试在 Chrome Android 中打开本地 html 文件:chromewebdata/:1 不允许加载本地资源:content://0@media/external/file/10769
- powershell - Azure Durable Function 在重试时丢失输入
- python - 在 Django TestCases 中创建多个测试数据库
- excel - 我可以在不创建引用的情况下将文件插入 Excel 吗?
- google-app-engine - 有没有办法在 Google Appengine 上安装 root ca
- javascript - 在数组中推送一个新值时,它会被完全覆盖 - VUEX
- python - 函数返回 None 但它应该返回一个字符串,可能很傻
- javascript - setState 方法未设置状态