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

如何在Pandas中按Col1后缀数字匹配将对应行并排展示

解决方案:匹配DataFrame中后缀数字相同的行并拼接至右侧

首先是生成原始DataFrame的代码:

import pandas as pd

data = {
    'Col1': ['John 1', 'John 2', 'John 3', 'Kyle 1', 'Kyle 3', 'Kyle 2'],
    'Col2': ['B', 'C', 'E', 'F', 'F', 'S'],
    'Col3': ['1', '1', '1', '1', '1', '2']
}

df = pd.DataFrame(data)

生成的原始数据:

Col1 Col2 Col3
0  John 1    B    1
1  John 2    C    1
2  John 3    E    1
3  Kyle 1    F    1
4  Kyle 3    F    1
5  Kyle 2    S    2

需求说明:给每一行找到Col1后缀数字相同的另一行,将该行内容以New Col1/New Col2/New Col3的形式拼在原行右侧,最终得到目标DataFrame。

实现方法(无需嵌套循环,用Pandas自连接更高效)

  1. 提取后缀数字作为匹配键:从Col1中提取出后缀的数字,生成临时列suffix,用来作为匹配的依据。
  2. 自连接匹配:将DataFrame与自身进行连接,连接键为suffix,同时排除行索引相同的情况(避免匹配到自己)。
  3. 整理列名与结果:对连接后的新列重命名,保留需要的列并调整顺序。

完整代码:

import pandas as pd

data = {
    'Col1': ['John 1', 'John 2', 'John 3', 'Kyle 1', 'Kyle 3', 'Kyle 2'],
    'Col2': ['B', 'C', 'E', 'F', 'F', 'S'],
    'Col3': ['1', '1', '1', '1', '1', '2']
}

df = pd.DataFrame(data)

# 步骤1:提取后缀数字
df['suffix'] = df['Col1'].str.extract(r'(\d+)', expand=False)

# 步骤2:自连接,匹配同后缀的另一行
merged_df = df.merge(
    df,
    on='suffix',
    suffixes=('', '_new'),
    how='left'
).query('index != index_new')  # 排除自身匹配

# 步骤3:整理列名和结果
result = merged_df[['Col1', 'Col2', 'Col3', 'Col1_new', 'Col2_new', 'Col3_new']]
result.columns = ['Col1', 'Col2', 'Col3', 'New Col1', 'New Col2', 'New Col3']

print(result)

执行后输出的结果:

Col1 Col2 Col3 New Col1 New Col2 New Col3
0  John 1    B    1  Kyle 1        F        1
1  John 2    C    1  Kyle 2        S        2
2  John 3    E    1  Kyle 3        F        1
3  Kyle 1    F    1  John 1        B        1
4  Kyle 3    F    1  John 3        E        1
5  Kyle 2    S    2  John 2        C        1

补充说明

  • 用str.extract提取数字时,正则r'(\d+)'可以准确捕获Col1末尾的数字部分,适用于后缀是任意位数数字的情况。
  • 自连接时用suffixes参数区分原列和连接后的列,再通过query排除自身行,确保每一行只匹配到对应的目标行。
  • 最后通过列重命名,把_new后缀的列改成需求中的New ColX格式,得到最终结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:55:10