从复杂的嵌套字典创建数据框?

时间:2017-11-27 21:47:23

标签: python json dictionary

我有一个大的嵌套,然后嵌套然后嵌套的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])

2 个答案:

答案 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)