如何从字典列表创建数据框

时间:2021-06-24 18:56:38

标签: python pandas dataframe dictionary data-science

我有一个数据框,其中一列将字典作为值。我想从这些字典中创建一个数据框。


                 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 列拥有的所有词典中制作一个数据框。

代码应该是什么?

3 个答案:

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