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

如何基于多列实现值的Concatenate/Join/Merge操作?

基于多列匹配实现姓名拼接的方案

初始数据

姓名身高体重班级编号
Mark1m8080kg1
Steve1m6060kg2
Bob1m6060kg2

需求:当身高、体重、班级编号三列值完全匹配时,将对应姓名拼接为逗号分隔的字符串,最终得到只包含重复组的结果。


解法1:Excel 操作

用TEXTJOIN数组公式实现分组拼接:

  1. 在空白单元格输入公式,按Ctrl+Shift+Enter(Excel 365/2021版本可直接回车):
=TEXTJOIN(",",TRUE,IF((B:B=B2)*(C:C=C2)*(D:D=D2),A:A,""))
  1. 若只想保留有多个姓名的组,可配合筛选或直接用UNIQUE+FILTER组合:
=UNIQUE(FILTER(TEXTJOIN(",",TRUE,IF((B:B=B2)*(C:C=C2)*(D:D=D2),A:A,"")),COUNTIFS(B:B,B2,C:C,C2,D:D,D2)>1))

解法2:Python Pandas 实现

通过分组聚合快速完成拼接:

import pandas as pd

# 构造初始数据
df = pd.DataFrame({
    "姓名": ["Mark", "Steve", "Bob"],
    "身高": ["1m80", "1m60", "1m60"],
    "体重": ["80kg", "60kg", "60kg"],
    "班级编号": [1, 2, 2]
})

# 按目标列分组,拼接姓名后筛选出多姓名组
grouped = df.groupby(["身高", "体重", "班级编号"])["姓名"].agg(",".join)
result = grouped[grouped.str.contains(",")].reset_index()

# 调整列名并移除冗余列
result = result.rename(columns={"姓名": "具有共同特征(身高、体重、班级编号)的人员姓名"}).drop(["身高", "体重", "班级编号"], axis=1)

print(result)

输出结果:

具有共同特征(身高、体重、班级编号)的人员姓名
0                                Steve,Bob

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:40:58