基于列表值列模糊匹配两个数据框
Fuzzy Match two dataframe based on list value column
我有两个数据框,我试图通过匹配合并到一列中的值。匹配的列是Df1中的header1和Df2中的header2(值为list)。我正在寻找一种适应的方法。
Df1: Df2:
|--------------|---------------| |--------------|------------------------|
| id_1 | header1 | | id_2 | header2 |
|--------------|---------------| |--------------|------------------------|
| 112 | item1 | | 32 |['item1','item2',...] |
|--------------|---------------| |--------------|------------------------|
| 56 | mass |
|--------------|---------------|
想要的结果:
Df_merged:
|--------------|---------------|--------------|------------------------|
| id_1 | header1 | id_2 | header2 |
|--------------|---------------|--------------|------------------------|
| 112 | item1 | 32 |['item1','item2',...] |
|--------------|---------------|--------------|------------------------|
有谁知道如何合并这两个数据框?。我完全不知道如何处理这个。非常感谢。
使用DataFrame.explode
with reassign header2
to header1
for avoid lost original column header2
and then use DataFrame.merge
:
df = df1.merge(df2.assign(header1 = df2['header2']).explode('header1'), on='header1')
我有两个数据框,我试图通过匹配合并到一列中的值。匹配的列是Df1中的header1和Df2中的header2(值为list)。我正在寻找一种适应的方法。
Df1: Df2: |--------------|---------------| |--------------|------------------------| | id_1 | header1 | | id_2 | header2 | |--------------|---------------| |--------------|------------------------| | 112 | item1 | | 32 |['item1','item2',...] | |--------------|---------------| |--------------|------------------------| | 56 | mass | |--------------|---------------|
想要的结果:
Df_merged: |--------------|---------------|--------------|------------------------| | id_1 | header1 | id_2 | header2 | |--------------|---------------|--------------|------------------------| | 112 | item1 | 32 |['item1','item2',...] | |--------------|---------------|--------------|------------------------|
有谁知道如何合并这两个数据框?。我完全不知道如何处理这个。非常感谢。
使用DataFrame.explode
with reassign header2
to header1
for avoid lost original column header2
and then use DataFrame.merge
:
df = df1.merge(df2.assign(header1 = df2['header2']).explode('header1'), on='header1')