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

按Task列分组并基于Start time生成任务分类列的技术需求

解决任务标记需求:根据Start time一致性标记X/Y

嘿,针对你这个需求,我给你准备了两种常用场景的实现方案,分别是Python Pandas(数据分析常用)和SQL(数据库端处理)的版本,你可以根据自己的使用场景来选~

Python Pandas 实现

如果你的数据是用Pandas处理的,用分组+转换的方式就能轻松搞定:

import pandas as pd

# 示例数据集
df = pd.DataFrame({
    'Task': ['A', 'A', 'B', 'B', 'C', 'C', 'C'],
    'Start time': ['2024-05-01 08:30', '2024-05-01 08:30', '2024-05-02 10:00', '2024-05-02 11:00', '2024-05-03 09:15', '2024-05-03 09:15', '2024-05-03 09:15']
})

# 新增标记列
df['Task Label'] = df.groupby('Task')['Start time'].transform(
    lambda group: 'X' if group.nunique() == 1 else 'Y'
)

print(df)

代码说明:

  • groupby('Task'):把相同任务的所有行归为一组
  • transform():将分组计算的结果广播回原DataFrame的每一行,保证每个任务的所有行都能拿到对应的标记
  • group.nunique() == 1:判断该组内的Start time是否只有唯一值,是则标记为X,否则标记为Y

SQL 实现

如果你的数据存在数据库里,用窗口函数就能直接在查询时生成标记:

SELECT
    Task,
    `Start time`,
    CASE
        WHEN COUNT(DISTINCT `Start time`) OVER (PARTITION BY Task) = 1 THEN 'X'
        ELSE 'Y'
    END AS `Task Label`
FROM your_dataset_table;

代码说明:

  • PARTITION BY Task:按任务分组
  • COUNT(DISTINCT Start time) OVER (...):统计每个任务组内不同的Start time数量
  • CASE语句:根据统计结果判断标记,唯一值则为X,否则为Y

注意事项

  • 确保Start time的格式统一:如果是字符串类型,要避免类似2024-05-01和2024/05/01这种格式差异导致的误判;如果是日期类型,就不用担心这个问题啦。
  • 如果是大型数据集,SQL的窗口函数性能通常会更优,而Pandas适合本地小批量数据处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:34:13