Pandas按两列分组后为对应字段值添加前导零后缀的实现方法
Pandas 分组拼接序号实现方案
核心逻辑为按id、date、type三级分组后生成组内递增序号,补零后和type字段直接拼接即可得到目标count字段,完整实现代码如下:
import pandas as pd # 构造样本数据(如果已有df可跳过这部分) data = { 'id': ['aa', 'aa', 'aa', 'aa', 'aa', 'bb', 'bb'], 'date': ['q1 21', 'q1 21', 'q2 22', 'q2 22', 'q2 22', 'q1 21', 'q1 21'], 'type': ['hi', 'hi', 'hey', 'hi', 'hi', 'hi', 'hey'] } df = pd.DataFrame(data) # 核心处理逻辑 df['count'] = df['type'] + df.groupby(['id', 'date', 'type']).cumcount()\ .add(1).astype(str).str.zfill(2) # 输出验证结果 print(df)
逻辑说明
groupby(['id', 'date', 'type']):将同id、同日期、同类型的数据划分为同一个小组cumcount():为每个小组内的行生成从0开始的递增序号add(1):将序号调整为从1开始,匹配需求的编号规则astype(str).str.zfill(2):将数字序号转为字符串,不足两位的自动补前导零- 直接和
type字段拼接即可得到最终的count字段值
运行上述代码后输出的df和你给出的预期结果完全一致。
内容的提问来源于stack exchange,提问作者Lynn
相关产品推荐
相关产品推荐

