【问题标题】: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) ??

标签: python pandas dataframe dictionary data-science


【解决方案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
      
      

      【讨论】:

        猜你喜欢
        • 2015-03-07
        • 1970-01-01
        • 1970-01-01
        • 2015-05-11
        • 2023-02-05
        • 2022-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多