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

如何用Python Pandas按不同列的相同值合并行?

用Pandas实现配对行合并

步骤1:构造原始DataFrame

先将你给出的原始数据整理为Pandas可处理的结构:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Id': ['1', '2', 'A', 'B'],
    'Col1': ['a', 'c', 'b', 'd'],
    'Col2': [np.nan, np.nan, np.nan, np.nan],
    'Paired_Id': ['A', 'B', '1', '2']
})

步骤2:自连接匹配配对行

通过merge方法将DataFrame与自身连接,用主行的Paired_Id匹配对应配对行的Id:

merged = df.merge(df, left_on='Paired_Id', right_on='Id', suffixes=('', '_pair'))

suffixes参数用来区分原始列和配对行的列,避免重名冲突。

步骤3:提取并整理目标列

从连接结果中筛选需要的字段,将配对行的Col1重命名为目标列Col2:

result = merged[['Id', 'Col1', 'Col1_pair', 'Paired_Id']].rename(columns={'Col1_pair': 'Col2'})

步骤4:过滤重复配对行

只保留每组配对中的主行(这里以Id为数字的行作为主行),避免重复数据:

result = result[result['Id'].str.isdigit()].reset_index(drop=True)

最终得到的result就是你需要的输出:

Id Col1 Col2 Paired_Id
0  1    a    b         A
1  2    c    d         B

通用化处理说明

如果主行和配对行的标识不是数字/字母的区别,可以通过判断配对关系过滤,比如只保留Id < Paired_Id的行(需确保类型支持比较),保证每组配对仅保留一行:

result = result[result['Id'] < result['Paired_Id']].reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 03:41:29