如何从带有列表的嵌套 Json 创建 pandas DataFrame
Posted
技术标签:
【中文标题】如何从带有列表的嵌套 Json 创建 pandas DataFrame【英文标题】:How to create pandas DataFrame from nested Json with list 【发布时间】:2020-12-26 05:36:12 【问题描述】:?
预计输出将在 DataFrame 中有 9 列(数据从服务器检索),
试过pd.json_normalize()
,但没用
'\n
"a": "1",\n
"b": "2",\n
"c": "3",\n
"d": "4",\n
"cd": [\n
\n
"i": "1",\n
"ii": "2",\n
"iii": "3",\n
"iv": "4",\n
"v": "5"
\n
]\n
'
【问题讨论】:
那么列应该是a、b、c、d、i、ii、iii、iv和v? 这能回答你的问题吗? Pandas read nested json 【参考方案1】:这是一个简单的解决方案。您需要使用 json_normalize 并将记录路径设置为 'cd' 列。
import json
import pandas as pd
js = '\n "a": "1",\n "b": "2",\n "c": "3",\n "d": "4",\n "cd": ["i": "1",\n "ii": "2",\n "iii": "3",\n "iv": "4",\n "v": "5"]'
js = json.loads(js)
df = pd.json_normalize(js, record_path=['cd'], meta=['a', 'b', 'c', 'd'])
print(df)
# > i ii iii iv v a b c d
# > 0 1 2 3 4 5 1 2 3 4
如果您需要更深入地了解 json_normalize 函数,我建议您阅读此article。
【讨论】:
【参考方案2】:看看,如果你觉得这个方法有用。
import pandas as pd
temp="""\n
"a": "1",\n
"b": "2",\n
"c": "3",\n
"d": "4",\n
"cd": [\n
\n
"i": "1",\n
"ii": "2",\n
"iii": "3",\n
"iv": "4",\n
"v": "5"
\n
]\n
"""
temp=eval(temp.replace("\n",""))
df=pd.DataFrame()
i=0
for key,val in temp.items():
if len(temp[key][0])>1:
for k,v in temp[key][0].items():
df.loc[i,k]=v
else:
df.loc[i,key]=val
print(df)
【讨论】:
以上是关于如何从带有列表的嵌套 Json 创建 pandas DataFrame的主要内容,如果未能解决你的问题,请参考以下文章
从嵌套的 json 列表中展平 Pandas DataFrame
Pandas:如何规范化具有多个 JSON 嵌套列表的 JSON 文件?
从深度嵌套的 JSON 创建 Pandas DataFrame