python - 如何从字典中创建一个新列,其值是集合的键?
问题描述
这是主数据框的一个子集。整个列都是下面字典中的lister
age_groups_type procedureschoice=aortic_valve_repair procedureschoice=arterial_switch
0 Pediatrics False True
1 Pediatrics False True
2 Pediatrics False True
3 Adults True False
4 Adults True False
5 Pediatrics False True
6 Adults True False
7 Pediatrics False True
8 Adults True False
9 Pediatrics False True
该词典包含每个手术的类别,无论是“主动脉”还是“二尖瓣”。等以及它们对应age_group_type
的是“成人”还是“儿科”(儿童)
{'Adults': {'Aortic': {'procedureschoice=aortic_valve_repair',
'procedureschoice=arch_replacement',
'procedureschoice=ascending_aortic_replacement',
'procedureschoice=avrmechanical',
'procedureschoice=avrstented_bioprosthesis',
'procedureschoice=bentall',
'procedureschoice=freestyle',
'procedureschoice=homograft_aortic_root_replacement',
'procedureschoice=ross',
'procedureschoice=valve-sparing_aortic_root_replacement'},
'Mitral': {'procedureschoice=mitral_valve_repair',
'procedureschoice=mvrmechanical',
'procedureschoice=mvrstented_bioprosthesis'},
'Tricuspid': {'procedureschoice=tricuspid_valve_repair',
'procedureschoice=tvrmechanical',
'procedureschoice=tvrstented_bioprosthesis'},
'CABG': {'procedureschoice=cabg'},
'Myectomy': {'procedureschoice=myectomy'},
'GUCH': {'procedureschoice=alcapa_repair',
'procedureschoice=arterial_switch',
'procedureschoice=asd_closure',
'procedureschoice=atrial_septectomy',
'procedureschoice=atrial_switchmustard',
'procedureschoice=av_canal_repairpartial',
'procedureschoice=av_canal_repairtransitional',
'procedureschoice=central_shunt',
'procedureschoice=coarctectomy_with_extended_end-to-end_anastomosis',
'procedureschoice=cor-triatriatum_repair',
'procedureschoice=coronary_av_fistula_repair',
'procedureschoice=extra-anatomical_bypass_of_coa',
'procedureschoice=fallot_repair',
'procedureschoice=fontan',
'procedureschoice=glenn',
'procedureschoice=lpa_reconstruction',
'procedureschoice=mbt_shunt',
'procedureschoice=mpa_reconstruction',
'procedureschoice=pa_banding',
'procedureschoice=papvc_repair',
'procedureschoice=pda_closure',
'procedureschoice=pulmonary_trans-annular_patch',
'procedureschoice=pulmonary_valve_replacementfreestyle',
'procedureschoice=pulmonary_valve_replacementhomograft',
'procedureschoice=pulmonary_valve_replacementstented_bioprosthesis',
'procedureschoice=pulmonary_valvotomy',
'procedureschoice=rastelli',
'procedureschoice=relief_of_rvoto',
'procedureschoice=resection_of_subaortic_membrane',
'procedureschoice=rpa_reconstruction',
'procedureschoice=rupture_sinus_of_valsalva_repair',
'procedureschoice=rvot_patch',
'procedureschoice=supravalvular_as_repair',
'procedureschoice=vascular_ring_repair',
'procedureschoice=vsd_closure'}},
'Pediatrics': {'VSD': {'procedureschoice=vsd_closure'},
'TGA': {'procedureschoice=arterial_switch',
'procedureschoice=atrial_switchmustard',
'procedureschoice=rastelli'},
'Arch': {'procedureschoice=arch_repair',
'procedureschoice=coarctectomy_with_extended_end-to-end_anastomosis',
'procedureschoice=extra-anatomical_bypass_of_coa'},
'Canal': {'procedureschoice=av_canal_repaircomplete',
'procedureschoice=av_canal_repairpartial',
'procedureschoice=av_canal_repairtransitional'},
'Valvular': {'procedureschoice=aortic_valve_repair',
'procedureschoice=avrmechanical',
'procedureschoice=avrstented_bioprosthesis',
'procedureschoice=bentall',
'procedureschoice=freestyle',
'procedureschoice=homograft_aortic_root_replacement',
'procedureschoice=maze_procedure',
'procedureschoice=mitral_valve_repair',
'procedureschoice=mvrmechanical',
'procedureschoice=mvrstented_bioprosthesis',
'procedureschoice=ross',
'procedureschoice=tricuspid_valve_repair',
'procedureschoice=tvrmechanical',
'procedureschoice=tvrstented_bioprosthesis',
'procedureschoice=valve-sparing_aortic_root_replacement'},
'RVOT_PA': {'procedureschoice=fallot_repair',
'procedureschoice=lpa_reconstruction',
'procedureschoice=mpa_reconstruction',
'procedureschoice=pulmonary_trans-annular_patch',
'procedureschoice=pulmonary_valve_replacementfreestyle',
'procedureschoice=pulmonary_valve_replacementhomograft',
'procedureschoice=pulmonary_valve_replacementstented_bioprosthesis',
'procedureschoice=pulmonary_valvotomy',
'procedureschoice=relief_of_rvoto',
'procedureschoice=rpa_reconstruction',
'procedureschoice=rvot_patch'},
'Palliative': {'procedureschoice=atrial_septectomy',
'procedureschoice=central_shunt',
'procedureschoice=dks',
'procedureschoice=first_stage_switchpab,_bts',
'procedureschoice=fontan',
'procedureschoice=glenn',
'procedureschoice=mbt_shunt',
'procedureschoice=pa_banding'}}}
我需要的是创建一个新列procedure_group
,其中填充了['Aortic', 'Mitral', 'Tricuspid', 'CABG', 'Myectomy', 'GUCH']
成人患者和['VSD', 'TGA', 'Arch', 'Canal', 'Valvular', 'RVOT_PA', 'Palliative']
儿科患者的字典键。我试过这个
def code_map(row):
for key in code.keys():
for i in code[key].keys():
for k in list(code[key][i]):
if row[row['age_groups_type'] == 'Adults' & row[k] == True]:
return i
elif row[row['age_groups_type'] == 'Pediatrics' & row[k] == True]:
return i
df['procedure_group'] = df.apply(code_map, axis=1)
和这个
def code_map(df):
for col in df:
for i in range(len(adult_list)):
if code["Adults"][i][col] == True:
return code["Adults"][i]
for i in range(len(pediatrics_list)):
if code["Pediatrics"][i][col] == True:
return code["Pediatrics"][i]
df['procedure_group'] = df.apply(code_map(df), axis=1)
和其他解决方案,但所有试验都失败了。
最终的输出将是这样的
age_groups_type procedureschoice=aortic_valve_repair procedureschoice=arterial_switch procedure_group
0 Pediatrics False True TGA
1 Pediatrics True False Aortic
2 Pediatrics False True TGA
3 Adults True False Aortic
4 Adults True False Aortic
5 Pediatrics False True TGA
6 Adults True False Aortic
7 Pediatrics False True TGA
8 Adults True False Aortic
9 Pediatrics False True TGA
我正在考虑的逻辑是,如果在每一行中,程序是True
并且患者是成人,则返回与该行对应的字典值。
我怎样才能做到这一点?
解决方案
推荐阅读
- asp.net-core - 如何在 .Net Core Blazor 应用程序中创建具有可折叠子菜单的 NavMenu
- javascript - 将 Promise 与 Non-Promise 调用链接时如何避免传播
- python - 不使用内置函数的python最大最小代码问题
- spring - 从表中获取聚合数据
- here-api - Here相对于荷兰(BAG / Kadaster)的邮政编码和地址的更新频率是多少?
- node.js - 使用节点、反应和 socket.io 的 Socket.io cors 错误
- r - 如何在 R 中检测 NDVI 数据的月度时间序列中的春季和秋季?
- javascript - 如果无效,则将字符串转换为数字/日期或 Null
- python - Python,DataFrame - 在一行中查找某个值
- javascript - “让”语句可以定义 2+ 的东西