如何在Pandas数据框中展开包含多个字典的列表

我有一个如下所示的数据集(在数据框中):

**_id** **paper_title**   **references**                                                                  **full_text** 1         XYZ              [{'abc':'something','def':'something'},{'def':'something'},...many others]       something 2         XYZ              [{'abc':'something','def':'something'},{'def':'something'},...many others]       something 3         XYZ              [{'abc':'something'},{'def':'something'},...many others]                         something

期望的结果:

**_id** **paper_title**   **abc**    **def**                               **full_text**   1         XYZ          something  something                               something                                         something  something                          .                              .                         (根据_id列展开列表中的所有字典)   2         XYZ          something  something                               something                                         something  something                          .                              .                         (根据_id列展开列表中的所有字典)

我尝试过使用df['column_name'].apply(pd.Series).apply(pd.Series)来将列表和字典拆分成数据框的列,但这并没有帮助,因为它没有拆分字典。

数据框的第一行:df.head(1)


回答:

在阅读了大量的Pandas文档后,我发现使用explode方法apply(pd.Series)结合是最简单的方法,这正是我在问题中所寻找的。

以下是代码:

df = df.explode('reference')

# 它将列表展开为子集列的行

df = df['reference'].apply(pd.Series).merge(df, left_index=True, right_index=True, how ='outer')

# 将数据框单元格内的列表拆分为行,并与原始数据框合并,类似于集合论中的(AUB)

附注:合并时需注意列中的唯一值,因为会有许多列包含重复的值

希望这能帮助到那些在数据框/系列中处理包含多个字典的列表,并希望将多个字典的键拆分到新列中,值作为行的用户。

Related Posts

如何对SVC进行超参数调优?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

如何在初始训练后向模型添加训练数据?

我想在我的scikit-learn模型已经训练完成后再…

使用Google Cloud Function并行运行带有不同用户参数的相同训练作业

我正在寻找一种方法来并行运行带有不同用户参数的相同训练…

加载Keras模型,TypeError: ‘module’ object is not callable

我已经在StackOverflow上搜索并阅读了文档,…

在计算KNN填补方法中特定列中NaN值的”距离平均值”时

当我从头开始实现KNN填补方法来处理缺失数据时,我遇到…

使用巨大的S3 CSV文件或直接从预处理的关系型或NoSQL数据库获取数据的机器学习训练/测试工作

已关闭。此问题需要更多细节或更清晰的说明。目前不接受回…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注