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

Pandas DataFrame如何将列值按分组拼接为字符串序列

按name分组拼接sex列生成seq列的实现方案

直接用pandas分组聚合即可,会自动保留原始行的先后顺序,拼接结果完全匹配预期。

示例原始数据构造

可先运行这段代码生成和你描述一致的测试DataFrame:

import pandas as pd

df = pd.DataFrame({
    "name": ["ab", "ab", "ab", "bc", "bc", "bc"],
    "sex": ["f", "m", "f", "f", "f", "m"]
})

核心实现

通用写法

适配所有字符串拼接需求:

result = df.groupby("name", as_index=False)["sex"].agg(
    seq=lambda s: "".join(s.tolist())
)

高性能写法(推荐大数量级使用)

用pandas内置str.cat方法,比手动join性能更优:

result = df.groupby("name", as_index=False)["sex"].agg(
    seq=lambda s: s.str.cat()
)

输出效果

运行后得到的result输出为:

name  seq
0   ab  fmf
1   bc  ffm

说明:pandas的groupby默认保留组内元素在原始DataFrame中的出现顺序,拼接时不会打乱观测先后,因此结果完全匹配你要的顺序要求。

注意事项

  • as_index=False会让分组键name保留为普通列,不会被设置为行索引,方便后续直接调用
  • 如果sex列存在空值,可在拼接前做清洗:比如填充占位符用s.fillna("-").str.cat(),剔除空值用s.dropna().str.cat()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 07:36:04