如何从字典列表中创建数据框 [关闭]

Posted

技术标签:

【中文标题】如何从字典列表中创建数据框 [关闭]【英文标题】:How to create a dataframe from a list of dictionaries [closed] 【发布时间】:2021-09-08 06:43:25 【问题描述】:

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


                 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 列的所有字典中创建一个数据框。

代码应该是什么?

【问题讨论】:

请匹配您所有的 [] 和引号。 到目前为止你尝试了什么? df['patient.reaction'].explode().apply(pd.Series) ?? 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

你可以使用.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

【讨论】:

以上是关于如何从字典列表中创建数据框 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Pandas - 从包含列表的字典中创建只有一行的数据框

如何从熊猫数据框中创建一个字典?

如何从一系列字典中创建键和值的数据框[重复]

如何在 C# 中创建 trie [关闭]

映射多个列表以在python中创建(键,值)对[关闭]

Java流从列表中创建一个对象[关闭]