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

如何在panda中创建根据title值自动重置计数的递增序号新列

Pandas 实现连续同值分组自增计数方法

针对你提出的连续同值计数需求,可直接用以下代码实现,无需额外循环遍历:

import pandas as pd

# 替换为你实际的原始数据加载逻辑
original_df = pd.DataFrame({
    "title": ["music", "music", "theatre", "theatre", "theatre"]
})

# 核心逻辑:生成按连续title分段的自增order列
original_df["order"] = original_df.groupby(
    original_df["title"].ne(original_df["title"].shift()).cumsum()
).cumcount() + 1

实现逻辑拆解

  • 逐行对比:通过title.shift()获取上一行的title值,用.ne()判断当前行与上一行值是否不同,输出布尔型序列
  • 生成连续块分组标记:对上述布尔序列做累计求和cumsum(),每遇到一次title值变化,累计值就+1,天然将连续相同的title划分为同一个独立分组
  • 组内计数:对每个独立分组调用cumcount()生成从0开始的行内序号,最后加1即可得到从1起始的计数结果

常见踩坑提醒

不要直接使用original_df.groupby("title").cumcount() + 1的写法,这种逻辑是全局同值统一计数:如果后续数据顺序为「music → theatre → music」,第二段music的计数会直接接续之前music的累计序号,完全不符合「title值和上一行不同就从1重新开始计数」的规则。

执行上述代码得到的输出与你期望的效果完全匹配:

title  order
0    music      1
1    music      2
2  theatre      1
3  theatre      2
4  theatre      3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 03:06:09