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

Pandas DataFrame按ID分组统计次数并将name列值转为集合的方法

实现方案

你可以直接使用groupby的agg聚合方法同时完成两个统计需求,代码如下:

import pandas as pd

# 原始DataFrame示例
data = pd.DataFrame({
    'ID': [23,42,23,42,42],
    'name': ['aaa','bbb','aab','bbb','bbb']
})

# 核心实现代码
result = data.groupby('ID', as_index=False).agg(
    count=('ID', 'size'),
    name=('name', set)
).sort_values('count', ascending=False, ignore_index=True)

print(result)

运行后输出完全符合预期:

count  ID       name
0      3  42      {bbb}
1      2  23  {aaa, aab}

代码说明

  • 聚合参数count=('ID', 'size')表示统计每个ID分组的行数,即ID的出现次数
  • 聚合参数name=('name', set)表示将每个分组内的name值去重后转为集合存储
  • 末尾的sort_values方法是按照count列降序排序,如果你不需要排序可以直接删除这部分逻辑

如果你使用的pandas版本较低不支持上述命名聚合语法,可以用分步骤实现的写法:

grouped = data.groupby('ID')
# 先处理name列转集合
result = grouped['name'].apply(set).reset_index(name='name')
# 再新增count计数列
result['count'] = grouped.size().values
# 按count降序排序
result = result.sort_values('count', ascending=False, ignore_index=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:21:02