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

如何创建pandas新列,实现按hourOfDay分组组内同值、整体递增ID

实现方案

你可以直接使用pandas内置的分组编号能力实现,不需要拆分合并DataFrame,有两种常用的简洁写法,都兼容category列后续扩展更多取值的场景:

方法1:使用groupby.ngroup()(逻辑最直观)

groupby.ngroup()会按分组的排序顺序为每个分组分配唯一整数编号,默认从0开始,加1即可得到你需要的从1开始的单调递增ID,同一hourOfDay分组内所有行的编号完全一致:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'hourOfDay': [5,5,8,8,13,13],
    'category': ['pageA','pageB','pageA','pageB','pageA','pageB'],
})

# 新增单调递增ID列
df['index'] = df.groupby('hourOfDay', sort=True).ngroup() + 1

执行后输出结果和你预期的完全一致。

方法2:使用pd.factorize()(性能更高,适合大数据量)

如果你的数据量较大,用factorize直接对hourOfDay列做因子化处理的性能会比分组操作更好:

df['index'] = pd.factorize(df['hourOfDay'], sort=True)[0] + 1

两种方法都默认按hourOfDay的升序分配ID,如果需要调整ID生成顺序,修改sort参数即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:39:02