Python 在字典中展平列表
我有以下json数据Python 在字典中展平列表,python,json,Python,Json,我有以下json数据 { "accountId": 999998, "actionTime": 1528381455013, "additionalInformation": { "eS": [ { "labels": [ "R" ], "sc": 1.0, "ti
{
"accountId": 999998,
"actionTime": 1528381455013,
"additionalInformation": {
"eS": [
{
"labels": [
"R"
],
"sc": 1.0,
"title": "Company"
},
{
"labels": [
"Slurpee"
],
"sc": 1.0,
"title": "Product"
}
]
},
"apiStatus": "Removed fields because of resyndication policy",
"archived": false,
}
data\u frame=json\u normalize(数据、记录路径=[“additionalInformation”、“eS”]、meta=[“label”]、errors='ignore')
我已经参考了json_normalize函数的和
所涵盖的大多数示例都将字典列表作为记录路径,我的示例将字典值作为列表。
请帮忙。
谢谢我相信有一种不那么冗长的方法可以做到这一点,但这里有一个选项:
from pandas.io.json import json_normalize
data = {
"accountId": 999998,
"actionTime": 1528381455013,
"additionalInformation": {
"eS": [{
"labels": [
"R"
],
"sc": 1.0,
"title": "Company"
},
{
"labels": [
"Slurpee", "other"
],
"sc": 1.0,
"title": "Product"
}
]
},
"apiStatus": "Removed fields because of resyndication policy"
}
ac = data['accountId']
at = data['actionTime']
r = json_normalize(data['additionalInformation'], record_path = 'eS')
r['accountId'] = ac
r['actionTime'] = at
r = r.drop('sc', axis = 1)
r
给出:
你没有数据帧,你有字典。您如何将
转换为csv
?您尝试了什么?我尝试了各种组合来提供json规范化的记录路径,其中一些我现在已经在我的问题中提出了您希望每个标签都有一行吗?i、 e.示例中标签数组中的“R”?还是eS数组中每个项目的行数?@smj,是的,我想要eS数组中每个项目的行数。我正在编辑我的json以使其更清晰。感谢@smj提供的简单解决方案。但我正在寻找更通用的解决方案,因为我的json会有所不同。我正在为项目编写一个实用程序,用于将任何给定的已验证json的“json转换为csv”。我想把所有的“词典列表”分成单独的文件。但在这里,“词典列表”是另一个词典的一部分。至少,我要说的是,为了找到一个通用的解决方案,还需要更多的测试示例。这是我一直坚持的一点,要将所有的“词典列表”展平
data_frame = json_normalize(data, record_path=["additionalInformation", "eS"], meta=["label"], errors='ignore')
from pandas.io.json import json_normalize
data = {
"accountId": 999998,
"actionTime": 1528381455013,
"additionalInformation": {
"eS": [{
"labels": [
"R"
],
"sc": 1.0,
"title": "Company"
},
{
"labels": [
"Slurpee", "other"
],
"sc": 1.0,
"title": "Product"
}
]
},
"apiStatus": "Removed fields because of resyndication policy"
}
ac = data['accountId']
at = data['actionTime']
r = json_normalize(data['additionalInformation'], record_path = 'eS')
r['accountId'] = ac
r['actionTime'] = at
r = r.drop('sc', axis = 1)
r