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

如何基于其他列的唯一值对任务数据表进行分组?

嘿,我来帮你解决基于列的唯一值分组数据表的问题~

首先,先把你提供的原始数据表整理成清晰的Markdown格式:

TaskIdOwnerNameWorkerNameCategory
1SaraSara1
1SaraMaya1
1SaraSara1
2SaraSara0
2SaraSara0
3SamSam1
3SamSam1
3SamSam1
4EllaElla1
4EllaElla1
5EllaElla1
6EllaElla0

接下来,根据你“基于其他列的唯一值分组”的需求,我会给出两种常用工具的实现方法,都是日常处理数据表时最常用的:

1. 用SQL实现分组

如果你是在数据库里操作这个表,GROUP BY子句就是专门干这个的——你只需要指定想要按其唯一值分组的列,再搭配聚合函数就能得到你想要的结果。

举个例子,如果你想按OwnerName + Category的唯一组合分组,统计每个分组下有多少个唯一的Task,以及总共有多少条记录,可以这么写:

SELECT 
  OwnerName,
  Category,
  COUNT(DISTINCT TaskId) AS unique_task_count, -- 统计分组内的唯一Task数量
  COUNT(*) AS total_records -- 统计分组内的总记录数
FROM your_table_name -- 把这里换成你的表名
GROUP BY OwnerName, Category; -- 按这两列的唯一值分组

执行后会得到这样的结果:

OwnerNameCategoryunique_task_counttotal_records
Sara113
Sara012
Sam113
Ella123
Ella011

要是你想按TaskId + OwnerName的唯一组合分组,只需要调整GROUP BY后面的列就行,比如:

SELECT 
  TaskId,
  OwnerName,
  Category,
  COUNT(DISTINCT WorkerName) AS unique_workers, -- 统计每个任务下的唯一Worker
  COUNT(*) AS records_per_task -- 统计每个任务的记录数
FROM your_table_name
GROUP BY TaskId, OwnerName, Category;

2. 用Python Pandas实现分组

如果是用Python处理数据,Pandas的groupby()方法用起来超方便,几步就能搞定:

首先先把数据加载成DataFrame:

import pandas as pd

data = [
    [1, 'Sara', 'Sara', 1],
    [1, 'Sara', 'Maya', 1],
    [1, 'Sara', 'Sara', 1],
    [2, 'Sara', 'Sara', 0],
    [2, 'Sara', 'Sara', 0],
    [3, 'Sam', 'Sam', 1],
    [3, 'Sam', 'Sam', 1],
    [3, 'Sam', 'Sam', 1],
    [4, 'Ella', 'Ella', 1],
    [4, 'Ella', 'Ella', 1],
    [5, 'Ella', 'Ella', 1],
    [6, 'Ella', 'Ella', 0]
]

df = pd.DataFrame(data, columns=['TaskId', 'OwnerName', 'WorkerName', 'Category'])

然后按OwnerName和Category的唯一值分组,同时指定要统计的内容:

grouped_result = df.groupby(['OwnerName', 'Category']).agg(
    unique_task_count=('TaskId', 'nunique'), # 统计唯一Task数
    total_records=('TaskId', 'count') # 统计总记录数
).reset_index()

print(grouped_result)

运行后输出的结果和SQL的结果完全一致:

OwnerName  Category  unique_task_count  total_records
0      Ella         0                  1              1
1      Ella         1                  2              3
2       Sam         1                  1              3
3      Sara         0                  1              2
4      Sara         1                  1              3

小提示

核心就是先明确你想基于哪几列的唯一组合来聚合数据,不管是SQL还是Pandas,只要把这些列指定为分组依据就行。如果需要统计去重后的数据,SQL用COUNT(DISTINCT 列名),Pandas用nunique();要是单纯统计行数,SQL用COUNT(*),Pandas用count()就好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:27:53