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

在Pandas中创建增量计数器列以标识重复数据集

解决方案:为重复行组分配唯一编号并对比组内timestamp

这事儿好办!我来给你一步步搞定这个需求,从生成dup_group列到后续对比组内的timestamps都安排明白:

1. 生成唯一重复组编号dup_group

你已经有了标记重复行的is_duplicate列,现在要给每个基于dup_columns的重复集合分配唯一的组号(1、2、3…),用pandas的groupby+ngroup就能轻松实现:

import pandas as pd

# 假设你的DataFrame已经存在,dup_columns定义如下
dup_columns = ['id', 'subject','topic', 'lesson', 'time']

# 基于重复列分组,生成从1开始的唯一组号
df['dup_group'] = df.groupby(dup_columns).ngroup() + 1

代码解释:

  • df.groupby(dup_columns)会把所有dup_columns值完全匹配的行归为同一个组,不管是重复多行还是只有单行的情况;
  • ngroup()默认会给每个组分配从0开始的整数ID,加1之后就变成了符合你需求的1、2、3…编号;
  • 这样即使是不重复的单行(is_duplicate=False),也会被分配一个唯一的组号,方便后续统一处理。

如果你只想给标记为重复的行(is_duplicate=True)分配组号,非重复行设为NaN或其他标识,可以用这个写法:

# 仅给重复行分配组号
mask = df['is_duplicate']
df.loc[mask, 'dup_group'] = df[mask].groupby(dup_columns).ngroup() + 1
# 非重复行设为缺失值(或根据需求设为0等)
df.loc[~mask, 'dup_group'] = pd.NA

2. 对比重复组内的timestamps值

有了dup_group之后,你可以轻松对每个组内的timestamps做各种对比分析,比如找组内最早/最晚的时间、计算时间差等:

示例1:添加组内最早/最晚timestamp到原DataFrame

# 计算每个组的时间极值
group_time_stats = df.groupby('dup_group')['timestamps'].agg(['min', 'max'])
# 把统计结果合并回原DataFrame
df = df.merge(group_time_stats, on='dup_group', how='left')
# 重命名列(可选)
df.rename(columns={'min': 'group_min_timestamp', 'max': 'group_max_timestamp'}, inplace=True)

示例2:直接计算组内timestamp的时间差

# 用transform直接在原DataFrame添加组内时间差列
df['group_timestamp_diff'] = df.groupby('dup_group')['timestamps'].transform(
    lambda x: x.max() - x.min()
)

这样你就能直观看到每个重复组内的时间范围和差异了~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:05:31