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

Pandas如何按ID分组合并多行diff值为|分隔串并新增diff-merged列

pandas按ID分组拼接diff列实现方法

核心思路是按id字段分组后,将数值型的diff列转为字符串,再用|作为分隔符拼接,最终生成指定名称的新列。

完整实现代码

import pandas as pd

# 构造示例数据集
df = pd.DataFrame({
    'id': ['abc123', 'DEF567', 'HIK445', 'abc123', 'abc123'],
    'diff': [718.0, 679.0, 1567.04, 766.6, 2307.88]
})

# 分组拼接逻辑
df_result = df.groupby('id', as_index=False)['diff'].apply(
    lambda group: '|'.join(group.astype(str))
).reset_index(name='diff-merged')

输出结果

执行后df_result的内容如下,每个ID对应唯一一行,拼接后的值存在diff-merged列:

id               diff-merged
0  DEF567                     679.0
1  HIK445                   1567.04
2  abc123  718.0|766.6|2307.88

注意事项

  • 因为原始diff列是浮点数值类型,必须先通过astype(str)转为字符串才能做字符串拼接,否则会触发类型错误
  • as_index=False参数用于避免将id字段设置为结果表的行索引,保持普通数据列的格式
  • 如果需要统一拼接后数值的显示格式(比如固定保留2位小数、去掉数值末尾无意义的.0),可以修改lambda内的转换逻辑,例如lambda group: '|'.join(f'{val:.2f}' for val in group)即可统一保留两位小数后拼接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 01:33:19