我正在尝试使用包含键,子键和列表的嵌套字典的一部分来创建熊猫数据框。我可以使用所需的键和子键创建一个数据框,但是我不知道如何提取与子键关联的列表。
我的字典看起来像这样:
medical_code_dict = {'Cardiac': {'snomed': ['123456789'],
'icd10': [],
'icd9': ['V12.3'],
'loinc': {'125-6':['234','567','890'],
'542-0':['098','765','432']}},
'Stroke': {'snomed': [],
'icd10': ['Z12.3'],
'icd9': [],
'loinc': {}},
'Blindness': {'snomed': [],
'icd10': [],
'icd9': [],
'loinc': {'345-7':['345','780']}}}
我想创建一个区域代码信息的数据框,包括列表。通过执行此操作,我可以进入其中的一部分:
loinc_test_1 = {}
for key in medical_code_dict.keys():
loinc_test_1[key] = (medical_code_dict[key]['loinc'])
loinc_test_2 = {}
for k,v in loinc_test_1.items():
for x in v:
loinc_test_2.setdefault(x,[]).append(k)
loinctable = pd.DataFrame(loinc_test_2.items(), columns=['loinc', 'SDOH'])
loinctable
loinc SDOH
0 125-6 [Cardiac]
1 542-0 [Cardiac]
2 345-7 [Blindness]
但是我不知道如何将列表插入数据框。我希望输出看起来像这样:
loinc SDOH response
0 125-6 [Cardiac] 234
1 125-6 [Cardiac] 567
2 125-6 [Cardiac] 890
3 542-0 [Cardiac] 098
4 542-0 [Cardiac] 765
5 542-0 [Cardiac] 432
6 345-7 [Blindness] 345
7 345-7 [Blindness] 780
答案 0 :(得分:0)
假设密钥结构是恒定的,这是一种幼稚的方法:
import pandas as pd
medical_code_dict = {'Cardiac': {'snomed': ['123456789'],
'icd10': [],
'icd9': ['V12.3'],
'loinc': {'125-6':['234','567','890'],
'542-0':['098','765','432']}},
'Stroke': {'snomed': [],
'icd10': ['Z12.3'],
'icd9': [],
'loinc': {}},
'Blindness': {'snomed': [],
'icd10': [],
'icd9': [],
'loinc': {'345-7':['345','780']}}}
buf = []
for key in medical_code_dict.keys():
loinc = medical_code_dict[key]['loinc']
if loinc.keys():
for l_key in loinc.keys():
for l_val in loinc[l_key]:
buf.append({'loinc' : l_key, 'SDOH' : key, 'response' : l_val})
df = pd.DataFrame(buf)
>>> df
SDOH loinc response
0 Cardiac 125-6 234
1 Cardiac 125-6 567
2 Cardiac 125-6 890
3 Cardiac 542-0 098
4 Cardiac 542-0 765
5 Cardiac 542-0 432
6 Blindness 345-7 345
7 Blindness 345-7 780