【发布时间】:2021-05-17 18:50:57
【问题描述】:
我正在尝试将复杂的 json(嵌套格式)转换为 csv。
{
"caudal": [
{"ts": 1612746051248, "value": "0.0"},
{"ts": 1612745450856, "value": "0.0"},
{"ts": 1612744250898, "value": "0.0"},
{"ts": 1612743650861, "value": "0.0"},
{"ts": 1612743050821, "value": "0.0"}
],
"FreeHeap": [
{"ts": 1612746051248, "value": "247564"},
{"ts": 1612745450856, "value": "247564"},
{"ts": 1612744250898, "value": "247564"},
{"ts": 1612743650861, "value": "247564"},
{"ts": 1612743050821, "value": "247564"}
],
"MinimoFreeHeap": [
{"ts": 1612746051248, "value": "237440"},
{"ts": 1612745450856, "value": "237440"},
{"ts": 1612744250898, "value": "237440"},
{"ts": 1612743650861, "value": "237440"},
{"ts": 1612743050821, "value": "237440"}
]
}
我的程序必须处理的jsons包含更多的记录,但是为了简化分析我把它变小了。我尝试使用pandas库如下:
import pandas as pd
with open('read.json') as f_input:
df = pd.read_json(f_input)
df.to_csv('out.csv', encoding='utf-8', index=False)
我得到以下结果:
caudal,FreeHeap,MinimoFreeHeap
"{'ts': 1612746051248, 'value': '0.0'}","{'ts': 1612746051248, 'value': '247564'}","{'ts': 1612746051248, 'value': '237440'}"
"{'ts': 1612745450856, 'value': '0.0'}","{'ts': 1612745450856, 'value': '247564'}","{'ts': 1612745450856, 'value': '237440'}"
"{'ts': 1612744250898, 'value': '0.0'}","{'ts': 1612744250898, 'value': '247564'}","{'ts': 1612744250898, 'value': '237440'}"
"{'ts': 1612743650861, 'value': '0.0'}","{'ts': 1612743650861, 'value': '247564'}","{'ts': 1612743650861, 'value': '237440'}"
"{'ts': 1612743050821, 'value': '0.0'}","{'ts': 1612743050821, 'value': '247564'}","{'ts': 1612743050821, 'value': '237440'}"
如您所见,信息是每个单元格例如:
"{'ts': 1612743050821, 'value': '247564'}"
我理解的是另一个Json..有什么简单的方法可以添加一个名为timestamp(ts)的列,并且只将值放在这个json现在所在的单元格中吗?
我相信这将是正确的方法,我的目标是将 json 中包含的信息转换为 csv 格式,以使其更易于被第三方(数据库或人工智能算法)使用。但如果你能想到另一种更方便的方式或格式,我愿意改变我最初的想法。我不得不承认我对这个世界很陌生。
我想过通过 json 并手动进行转换,但很难关联具有相同时间戳的测量值。
【问题讨论】: