pandas - 基于列表值列的模糊匹配两个数据框
问题描述
我有两个数据框,我试图通过匹配列中的值来合并它们。要匹配的列是 Df1 中的 header1 和 Df2 中的 header2(值为列表)。我正在寻找一种适应的方法。
Df1: Df2: |---------------|----------------| |--------------|-------------| | id_1 | 页眉1 | | id_2 | 页眉2 | |---------------|----------------| |--------------|-------------| | 112 | 项目1 | | 32 |['item1','item2',...] | |---------------|----------------| |--------------|-------------| | 56 | 质量 | |---------------|----------------|
想要的结果:
df_merged: |-------------|---------------|--------------|--- ----------------------| | id_1 | 页眉1 | id_2 | 页眉2 | |-------------|---------------|--------------|--- ----------------------| | 112 | 项目1 | 32 |['item1','item2',...] | |-------------|---------------|--------------|--- ----------------------|
有谁知道如何合并这两个数据框?我完全不知道如何处理这个。提前非常感谢。
解决方案
DataFrame.explode
与重新分配header2
一起使用header1
以避免丢失原始列header2
,然后使用DataFrame.merge
:
df = df1.merge(df2.assign(header1 = df2['header2']).explode('header1'), on='header1')
推荐阅读
- angular - 我们如何在 Angular 中设置属性?
- python - 如何从字典中获取值以便它可以与 while 循环一起使用?
- azure - Azure 存储表最大分区和最大行键
- c# - 如何在 C# 中使用作为布尔结果返回的数学表达式执行位逻辑?
- google-sheets - 如何修复 Google 令牌在 7 天后过期
- python - 如何跳过 Firebase 查询中的数据点?
- c - 为什么我的闰年代码不起作用?(特别是 int 日)
- flutter - 通过 POS 系统在收据上打印我们的图像时出错
- javascript - JS:在另一个画布内定位图像/画布,然后是矩形
- sql - 按文件对 BigQuery 中的表进行分区