【发布时间】:2021-11-05 08:39:25
【问题描述】:
我需要扁平化/规范化非常大的分层 JSON 记录。
我已经用json_normalize 尝试了这些示例,但我不知道我必须在record_path 参数中传递的列的确切名称,而不是meta 的其他列。
这是 JSON 记录可能有多复杂的示例:
d2 = {'key2':None,
'a':1 , 'b':{'v':[1,2,3]},
'c': {'c1':'c1', 'c2':'c2'},
'd': {'d1': 1, 'd2':{'d3': 'd3', 'd4': 'd4', 'd5':[3,3,3,4]}},
'key':
{'seqOf': [{'seqOf':
{'dedicatedAccountID': '191', 'campaignIdentifier': None, 'transactionAmount': b'106.670000',
'adjustmentAmount': None, 'accountBalance': b'122.000000', 'accountExpiryDateBefore': None,
'accountExpiryDateAfter': None, 'accountStartDateBefore': None, 'accountStartDateAfter': None,
'mainDedicatedAccountID': None, 'offerIdentifier': None, 'dedicatedAccountUnit': '1',
'transactionUnits': None, 'adjustmentUnits': None, 'unitBalance': None, 'realMoneyFlag': None}
}]}}
我也尝试为every key and then join the columns 做,但正如我所说,文件真的很复杂。 性能不是问题,我是离线运行的,我只需要将其中一些 JSON 记录展平为 CSV。
有没有自动工具可以做到这一点?
【问题讨论】:
-
你的预期输出是什么?
-
@galaxyan 没有任何嵌套列表或字典的平面 CSV 文件。这是数据团队的要求。我相信他们可以使用 Azure 数据工厂,但还没有决定。
-
例如,'b':{'v':[1,2,3]} 应该如何展平?
-
@galaxyan 纯列表可能会爆炸。但是如果一个列表有嵌套的字典,我们也需要将它展平,
标签: python json pandas csv flatten