我有一个数据框,其中一列将字典作为值。我想从这些字典中创建一个数据框。
patient.reaction patient.drug
0 [{'reactionmeddrapt': 'CHEST PAIN'}] [{'drugcharacterization': '1', 'medicinalprodu...
1 [{'reactionmeddrapt': 'DISTURBANCE IN.. [{'drugcharacterization': '1', 'medi...
2 [{'reactionmeddrapt: 'EXTRAMIDAL DISORDER'}] [{'drugcharacterization': '1', 'medicrodu...
我想从patient.reaction 列拥有的所有词典中制作一个数据框。
代码应该是什么?
答案 0 :(得分:0)
DataFrame 的每一列都包含一个 list
和一个元素,一个 dict
。您可以结合使用 pd.concat
和列表解析来创建所需的 DataFrame:
>> pd.DataFrame([x[0] for x in df["patient.reaction"]])
reactionmeddrapt
0 CHEST PAIN
1 DISTURBANCE IN
2 EXTRAMIDAL DISORDER
答案 1 :(得分:0)
IIUC,你可以试试:
df = pd.DataFrame({'patient.reaction': {0: [{'reactionmeddrapt': 'CHEST PAIN'}],
1: [{'reactionmeddrapt': 'DISTURBANCE IN..'}],
2: [{'reactionmeddrapt': 'EXTRAMIDAL DISORDER'}]}})
df = df['patient.reaction'].explode().apply(pd.Series)
输出:
reactionmeddrapt
0 CHEST PAIN
1 DISTURBANCE IN..
2 EXTRAMIDAL DISORDER
答案 2 :(得分:0)
您可以使用 .explode()
+ pd.DataFrame()
:
df_out = pd.DataFrame(df['patient.reaction'].explode().to_list())
结果:
print(df_out)
reactionmeddrapt
0 CHEST PAIN
1 DISTURBANCE IN..
2 EXTRAMIDAL DISORDER