熊猫按条件顺序合并数据帧

时间:2019-05-11 13:53:46

标签: python pandas dataframe

假设我有2个数据框:

DF1:

Col1 | Col2 | Col3

XCN000370 / 17-18C | XCN0003711718C | 0003971718

DF2

Col1 | Col2 | Col3

XCN0003711718C | XCN0003711718C | 0003971718

我希望他们像这样合并:

  • 第一场比赛Col1(DF1)和Col1(DF2)
  • 在未匹配项中,将Col1(DF1)与Col2(DF2)匹配
  • 在剩余的不匹配项中,将Col1(DF1)与Col3(DF2)匹配

现在通过交换DF1和DF2并保持不匹配来重复此操作

  • 在剩余的不匹配匹配项Col1(DF2)和Col1(DF1)中
  • 在未匹配项中,将Col1(DF2)与Col2(DF1)匹配
  • 在剩余的不匹配项中,将Col1(DF2)与Col3(DF1)匹配

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为没有一行代码可以做到这一点。因此,请按照以下步骤操作。

1)首先,创建一个列表: dfs = []

2)合并数据框上的每个条件: dfs.append(pd.merge(df1,df2,left_on='col1',right_on='col1',how='outer')).dropna() dfs.append(pd.merge(df1,df2,left_on='col1',right_on='col2',how='outer')).dropna() dfs.append(pd.merge(df1,df2,left_on='col1',right_on='col3',how='outer')).dropna()

^重复

3)现在将它们串联: pd.concat(dfs)