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

如何基于DataFrame的column1生成分组递增计数新列且保留column2

实现DataFrame按分组生成组内序号的方案

你担心groupby丢失column2数据的顾虑是多余的,pandas的groupby执行组内序列生成操作时不会修改、删除非分组列的数据,以下是具体实现方案:

推荐方案:groupby + cumcount(简洁高效)

该方案严格保留原始行顺序,不会改动column2的任何数据,仅新增需要的column3列:

import pandas as pd

# 构造示例DataFrame,你可以替换为自己的数据源
data = {
    "column1": ["x","x","x","y","y","y","y","z","c","c"],
    "column2": ["X22","X26","X287","X26","X22","X287","X26","X27","X29","X22"]
}
df = pd.DataFrame(data)

# 核心实现逻辑:按column1分组,组内从0开始计数后加1得到从1开始的序号
# sort=False严格保留分组的原始出现顺序,避免序号错乱
df["column3"] = df.groupby("column1", sort=False).cumcount() + 1

替代方案:手动遍历计数(无需groupby)

如果不想使用groupby,也可以通过字典记录每个分组的出现次数,遍历生成序号:

count_map = {}
column3_list = []
for group_val in df["column1"]:
    # 分组值不存在则初始化为0,每次累加1
    count_map[group_val] = count_map.get(group_val, 0) + 1
    column3_list.append(count_map[group_val])
df["column3"] = column3_list

两种方法输出的结果和你预期的完全一致,column2的所有数据都会完整保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:09:03