You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中基于两列值合并顺序打乱的两个DataFrame?

解决两个DataFrame基于两列匹配关联的问题

这个需求在日常数据处理里挺常见的,用Python的pandas库就能轻松搞定,我给你一步步拆解操作方法:

核心思路

因为两个DataFrame的Col1和Col2是唯一且完全匹配的组合(只是排列顺序不同),我们可以把这两列作为匹配的“键”,通过合并操作将表2的Col3关联到表1对应的行上,最终得到和表1顺序一致、新增Col3的新表。

具体操作步骤

1. 导入pandas库

首先确保你已经安装了pandas,然后导入它:

import pandas as pd

2. 构造示例数据(模拟你的场景)

我先造两个和你描述一致的DataFrame,方便你对照理解:

# 表1:仅包含Col1和Col2,行顺序固定
df1 = pd.DataFrame({
    'Col1': ['A', 'B', 'C', 'D'],
    'Col2': [1, 2, 3, 4]
})

# 表2:Col1、Col2顺序打乱,新增需要关联的Col3列
df2 = pd.DataFrame({
    'Col1': ['C', 'A', 'D', 'B'],
    'Col2': [3, 1, 4, 2],
    'Col3': ['Apple', 'Banana', 'Cherry', 'Date']
})

3. 执行匹配合并

用pd.merge()函数,指定以Col1和Col2作为匹配键,选择inner内连接(因为两个表的键组合完全一致,内连接会保留所有表1的行并精准匹配对应Col3):

# 合并后会自动沿用表1的行顺序
merged_df = pd.merge(df1, df2, on=['Col1', 'Col2'], how='inner')

4. 查看最终结果

打印merged_df就能看到符合要求的新表:

Col1  Col2    Col3
0    A     1  Banana
1    B     2    Date
2    C     3   Apple
3    D     4  Cherry

额外注意事项

  • 如果你的数据里Col1+Col2的组合可能存在重复,可以先检查并去重:
    # 检查表1是否有重复组合
    print("表1是否有重复组合:", df1.duplicated(subset=['Col1', 'Col2']).any())
    # 检查表2是否有重复组合
    print("表2是否有重复组合:", df2.duplicated(subset=['Col1', 'Col2']).any())
    
    # 若有重复,先对表2去重(保留第一个出现的组合)
    df2_clean = df2.drop_duplicates(subset=['Col1', 'Col2'], keep='first')
    
  • 如果需要严格保留表1的所有行(哪怕表2里没有对应组合),可以把how='inner'改成how='left',此时表1中找不到匹配的行,Col3会显示为NaN。

内容的提问来源于stack exchange,提问作者Sahil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:57:55