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

如何修改Pandas DataFrame重复行id,使重复日期id一致且连续

解决Pandas中重复日期对应连续ID的问题

你的需求是让重复日期对应的ID相同,同时整个ID列保持连续递增,之前的方法依赖原ID列填充,但原ID列本身存在跳号,所以无法得到连续结果。以下是几种直接生成连续ID的方案:

方案1:使用pd.factorize

factorize会为每个唯一的day分配从0开始的连续编码,加1后即可得到从1开始的连续ID:

import pandas as pd

dct = {'day': ['Mon', 'Tue', 'Wed', 'Wed', 'Thur', 'Fri', 'Fri', 'Sat', 'Sun'],
       'id': ['1', '2', '3', '4', '5', '6', '7', '8', '9']}
df = pd.DataFrame(dct)

# 生成连续ID
df['id'] = pd.factorize(df['day'])[0] + 1
print(df)

输出结果:

day  id
0   Mon   1
1   Tue   2
2   Wed   3
3   Wed   3
4  Thur   4
5   Fri   5
6   Fri   5
7   Sat   6
8   Sun   7

方案2:使用groupby.ngroup

通过分组为每个唯一day分配组号,加1后实现从1开始的连续ID:

df['id'] = df.groupby('day').ngroup() + 1

方案3:使用rank方法

设置method='dense'确保相同day的排名一致且连续,最后转换为整数:

df['id'] = df['day'].rank(method='dense', ascending=True).astype(int)

这三种方法都无需依赖原ID列的数值,能直接生成符合要求的连续ID,彻底解决跳号问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 07:30:26