【发布时间】:2019-12-10 02:59:09
【问题描述】:
我正在尝试展平以下内容,但它仅适用于非三重嵌套 JSON。
工作代码:
导入 json
import pandas as pd
from pandas.io.json import json_normalize
data = [{'masterName': 'AAAAAAAAAAA',
'shortname': 'AA',
'info': {
'name': 'randomka'
},
'mainNames': [{'date': '2019-05-16', 'NumberOne': 1111},
{'date': '2019-06-22', 'NumberOne': 2222}]}
]
result = json_normalize(data, 'mainNames', ['masterName', 'shortname',
['info', 'name']],errors='ignore')
不工作:
data2 = [{"masterName": "AAAAAAAAAAA",
"mainNames": [
{
"numbers": [{
"date": "2019-05-16",
"NumberOne": 222}],
"name": "randomka"
},
{
"numbers": [{
"date": "2019-05-16",
"NumberOne": 222}],
"name": "randomka"
}
]
}]
json_normalize(data2, 'mainNames', ['masterName'],errors='ignore')
返回时:
我在json_normalize 代码中尝试了替代record_paths 和metas,但我无法使其适用于这个三重嵌套的JSON。换句话说,我不能一口气读完所有的专栏。
我尝试过的替代方案很有效并且看起来很接近:
json_normalize(data2, ['mainNames','numbers'], ['masterName'],errors='ignore')
输出几乎是一个 Excel 视图,其中包含列中的数据。根据评论请求的预期视图:
UPD:数据可能有多个数字分支:
data2 = [{"masterName": "AAAAAAAAAAA",
"mainNames": [
{
"numbers": [{
"date": "2019-05-16",
"NumberOne": 222}],
"name": "randomka"
},
{
"numbers": [{
"date": "2019-05-16",
"NumberOne": 222},
{
"date": "2019-07-01",
"NumberOne": 341}],
"name": "randomka"
}
]
}]
【问题讨论】:
-
你能分享一下预期的输出吗?我不熟悉这个过程正常化。我敢肯定,分享预期的输出也会对其他人有所帮助。无论如何,为这个问题制作自己的功能是否可以接受?我觉得这可能需要更少的时间。
标签: python json pandas python-2.7