我有一个大的嵌套,然后嵌套然后嵌套的json文件保存为.txt格式。我需要访问一些特定的密钥对并创建一个数据框或另一个转换的json对象以供进一步使用。这是一个包含2个密钥对的小样本。
[
{
"ko_id": [819752],
"concepts": [
{
"id": ["11A71731B880:http://ontology.intranet.com/Taxonomy/116@en"],
"uri": ["http://ontology.intranet.com/Taxonomy/116"],
"language": ["en"],
"prefLabel": ["Client coverage & relationship management"]
}
]
},
{
"ko_id": [819753],
"concepts": [
{
"id": ["11A71731B880:http://ontology.intranet.com/Taxonomy/116@en"],
"uri": ["http://ontology.intranet.com/Taxonomy/116"],
"language": ["en"],
"prefLabel": ["Client coverage & relationship management"]
}
]
}
]
以下代码将数据加载为列表但我需要以字典的形式访问数据,我需要每个密钥对中的“ko_id”,“uri”和“prefLabel”并将其放入pandas数据框或字典以供进一步分析。
with open('sample_data.txt') as data_file:
json_sample = js.load(data_file)
以下代码为我提供了第一个元素的确切值。但是Donot实际上知道如何将它组合在一起并构建最终算法来创建数据帧。
print(sample_dict["ko_id"][0])
print(sample_dict["concepts"][0]["prefLabel"][0])
print(sample_dict["concepts"][0]["uri"][0])
答案 0 :(得分:2)
您可以使用生成器将数据传递给pandas.DataFrame
:
import pandas as pd
import json as js
with open('sample_data.txt') as data_file:
json_sample = js.load(data_file)
df = pd.DataFrame(data = ((key["ko_id"][0],
key["concepts"][0]["prefLabel"][0],
key["concepts"][0]["uri"][0]) for key in json_sample),
columns = ("ko_id", "prefLabel", "uri"))
<强>输出:强>
>>> df
ko_id prefLabel uri
0 819752 Client coverage & relationship management http://ontology.intranet.com/Taxonomy/116
1 819753 Client coverage & relationship management http://ontology.intranet.com/Taxonomy/116
答案 1 :(得分:1)
for record in sample_dict:
df = pd.DataFrame(record['concepts'])
df['ko_id'] = record['ko_id']
final_df = final_df.append(df)