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

如何对含重复game_id的pandas DataFrame按唯一值顺序重新编号?

实现方案

你要的按首次出现顺序为唯一game_id生成从1开始的连续编号,用pandas内置方法即可实现,完全不需要用到reindex相关功能:

方法1:使用factorize(性能最优)

pd.factorize会直接按照值第一次出现的顺序为唯一值分配整数编码,默认从0开始,加1即可得到你需要的编号:

import pandas as pd

# 假设你的投篮数据DataFrame变量名为knicks_shots
knicks_shots['game_order_id'] = pd.factorize(knicks_shots['game_id'], sort=False)[0] + 1

参数sort=False是默认值,显式标注是为了避免按game_id数值排序打乱出现顺序,确保第一个出现的0021300008对应编号1,第二个出现的0021300018对应编号2,以此类推。

方法2:使用groupby的ngroup方法

如果你更熟悉分组操作,也可以用分组编号的方式实现,效果完全一致:

knicks_shots['game_order_id'] = knicks_shots.groupby('game_id', sort=False).ngroup() + 1

结果验证

执行完后可以用下面的代码核对每个game_id对应的编号是否符合预期:

# 输出所有唯一game_id和对应的顺序编号
print(knicks_shots[['game_id', 'game_order_id']].drop_duplicates())

两种方法处理7000行数据的耗时都可以忽略,也不会修改原表的行顺序和其他字段内容。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:06:08