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

如何使用Pandas合并含重复值的列并按UserId分组统计

Pandas按UserId分组统计域名数量并拼接域名实现方案

原代码存在两个问题:

  • groupby传参错误:该方法仅接收分组字段作为入参,你把待聚合的DomainId也传入了分组参数,会导致按两列做联合分组,不符合单按UserId分组的需求
  • 聚合方法选择错误:sum()仅支持数值求和,无法同时实现计数、字符串拼接的聚合逻辑

可直接运行的实现代码

import pandas as pd

# 读取源csv文件
df = pd.read_csv('User_Domains.csv')

# 分组聚合,sort=False用于保留UserId在源文件中首次出现的顺序,和期望输出顺序一致
df_result = df.groupby('UserId', as_index=False, sort=False).agg(
    NumDomains=('DomainId', 'count'),
    Domains=('DomainId', lambda x: '|'.join(x))
)

# 打印查看结果
print(df_result)

# 如需导出为csv文件,取消注释下一行即可,index=False表示不导出行索引
# df_result.to_csv('result.csv', index=False)

代码说明

  • as_index=False:禁止将分组字段UserId设为行索引,保留为普通数据列,匹配期望输出的表结构
  • agg()内定义两个聚合规则:
    • NumDomains=('DomainId', 'count'):统计每个UserId分组下的DomainId总数,对应该用户关联的域名数量
    • Domains=('DomainId', lambda x: '|'.join(x)):将分组下所有DomainId值用|拼接为单个字符串

运行后输出结果和需求完全一致:

UserId  NumDomains  Domains
0  TestTraderCAD           2  ALL|CAD
1  TestTraderUSD           2  ALL|USD
2  TestTraderGBP           2  ALL|GBP

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:09:49