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

Pandas Groupby聚合拼接字符串时如何保留原有顺序并去重?

解决方案

你现有实现使用set去重导致顺序丢失,核心原因是set结构本身不保留元素插入顺序。要保留预先排序后的先后顺序同时去重,直接用Pandas Series自带的drop_duplicates()方法即可,该方法默认保留元素第一次出现的位置,完全匹配你排序后的顺序需求。

修改后的完整代码如下:

import numpy as np
import pandas as pd

df = df.sort_values(
        ['id', 'order_column']
    ).groupby('id').agg(
        {
            'channel': lambda x: ' > '.join(x.drop_duplicates()),
            'value': np.sum
        }
    )

如果你使用的Pandas版本低于1.1.0,也可以依托Python 3.7+原生支持的有序字典特性实现,写法如下:

'channel': lambda x: ' > '.join(dict.fromkeys(x).keys())

以上两种写法都可以输出你期望的结果:Email > Affiliate > Organic Search > Branded Social > Direct

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:30:02