Python 将选定的JSON标记转换为数据帧
我有一个类似-Python 将选定的JSON标记转换为数据帧,python,json,pandas,dataframe,Python,Json,Pandas,Dataframe,我有一个类似- [ { "key": "033298fd-f792-4343-b145-852e9cdb680a", "value": { "total": 15452, "history": { "2019-11-05T23:05:14.53878Z": { "challenge": "readrules", "increase": 1, "total": 1
[
{
"key": "033298fd-f792-4343-b145-852e9cdb680a",
"value": {
"total": 15452,
"history": {
"2019-11-05T23:05:14.53878Z": {
"challenge": "readrules",
"increase": 1,
"total": 1
},
"2019-11-05T23:17:48.849886Z": {
"challenge": "looksthesame",
"increase": 100,
"total": 1601
}
},
...
...
...
}
.... 2nd 'key' ....
}
其中,每个“键”后面都有一个“值”,该值具有历史记录
。此“历史记录”同样有一个“键”,即时间戳
,以及一个具有质询详细信息质询
、增加
和总计
的值。
我想把它转换成一个熊猫数据帧,看起来像-
key timestamp challenge increase total
033298fd-f792-4343-b145-852e9cdb680a 2019-11-05T23:05:14.53878Z readrules 1 1
033298fd-f792-4343-b145-852e9cdb680a 2019-11-05T23:17:48.84986Z looksthesame 100 101
我试着与-
pd.io.json.json_normalize(json)
但这只是将整个json平铺成不同的列 假设您的数据名
数据,请尝试:
pd.concat([
pd.io.json.json_normalize([
{
"key": d["key"],
"timestamp": t,
"challenge": v['challenge'],
"increase": v['increase'],
"total": v['increase']
}
for t,v in d['value']['history'].items()
])
for d in data
])
你想要的结果被大大截断了。请编辑它,以便人们了解您的目标是什么。或者更好地描述您想要的列名/结构。Pandasjson\u normalize
不会神奇地给出您需要的结构。您需要重新构造输入json,以便数组中的每个元素都代表一行,即在您的情况下timestamp
我同意@FatihAkici。至少我们需要对data.Editted上的转换进行适当的描述。我希望它现在更具描述性!除了json\u normalize()
,您还尝试过其他方法吗?它是嵌套列表。对于data
和t
中的每个项目d
,每个d
中的v
仅提取数据框中所需的信息。@thushv89给出解释。