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

如何为Pandas DataFrame添加标签列,实现重复Ids序列分组?

给Pandas DataFrame按Ids组添加分组标签的简洁方法

先还原你的DataFrame场景:

import pandas as pd

data = {'Ids': [1, 2, 3, 1, 2, 3, 1, 2, 3], 'Value': [32, 56, 87, 12, 45, 78, 14, 21, 56]}
df = pd.DataFrame(data)

你需要给每一组连续的Ids 1-3添加Case标签(A、B、C...),这个需求用两行核心代码就能搞定,非常简洁:

# 生成分组编号:每次遇到Ids=1就开启新分组
df['Case'] = (df['Ids'] == 1).cumsum()
# 将数字编号转为A/B/C这类字母标签
df['Case'] = df['Case'].apply(lambda x: chr(ord('A') + x - 1))
# 调整列顺序,让Case列排在最前面
df = df[['Case', 'Ids', 'Value']]

运行后就能得到你想要的结果:

Case  Ids  Value
0    A    1     32
1    A    2     56
2    A    3     87
3    B    1     12
4    B    2     45
5    B    3     78
6    C    1     14
7    C    2     21
8    C    3     56

原理说明

  • (df['Ids'] == 1).cumsum():这一步会先把所有Ids=1的行标记为1,其他行标记为0,然后对这些值累加。每遇到一个1,累加结果就加1,刚好对应每一组的编号(第一组是1,第二组是2,以此类推)。
  • chr(ord('A') + x -1):把数字编号转换成对应的字母,1对应A,2对应B,完全匹配你需要的标签格式。

如果之后你的分组起始标识有变化,或者需要更灵活的分组逻辑,也可以用df.groupby((df['Ids'] == 1).cumsum()).ngroup()来生成编号,不过当前场景下上面的方法是最直接高效的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:43:26