【问题标题】:Pandas Merge Dataframes Sequentially on ConditionsPandas 按条件顺序合并数据框
【发布时间】:2019-09-29 03:40:01
【问题描述】:

假设我有 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) 匹配
  • 在剩余的 Unmatched 中,将 Col1 (DF1) 与 Col3 (DF2) 匹配

现在重复此操作,将 DF1 和 DF2 替换为剩余的不匹配

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

有什么想法吗?

【问题讨论】:

  • 总体目标是什么?你希望你的输出是什么样的?

标签: python pandas dataframe


【解决方案1】:

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

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-15
    • 2021-07-21
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 2016-07-23
    • 2019-03-20
    相关资源
    最近更新 更多