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

Python中如何为DataFrame内客户的每次出现进行连续编号?

解决DataFrame中客户出现次数连续编号的问题

嘿,这个需求其实用Pandas的分组计数功能就能轻松搞定!咱们直接看具体操作:

首先,先把你的示例数据转换成Pandas DataFrame:

import pandas as pd

data = {
    'Date': ['01/01/2021', '01/01/2021', '01/01/2021',
             '01/02/2021', '01/02/2021', '01/02/2021',
             '01/03/2021', '01/03/2021', '01/03/2021',
             '01/04/2021', '01/04/2021',
             '01/05/2021', '01/05/2021',
             '01/06/2021'],
    'Customer': ['A', 'B', 'C',
                 'A', 'B', 'C',
                 'A', 'B', 'C',
                 'A', 'B',
                 'A', 'B',
                 'A']
}

df = pd.DataFrame(data)

接下来是核心操作——按客户分组,对每组记录按日期排序后生成连续编号:

# 先把Date列转为日期类型,确保排序逻辑正确
df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')

# 按Customer分组,每组内按Date排序后用cumcount生成从1开始的连续编号
df['Appear'] = df.sort_values('Date').groupby('Customer').cumcount() + 1

给你拆解下这段代码的逻辑:

  • groupby('Customer'):把数据按客户拆分成独立的小组,每个小组只处理对应客户的记录
  • sort_values('Date'):确保每个客户的记录是按日期从早到晚排列的,避免编号顺序混乱
  • cumcount() + 1:cumcount()会给每个小组内的行从0开始计数,加1后就变成了从1开始的连续编号,正好对应客户的第几次出现

运行后,你的DataFrame就会得到完全符合预期的结果:

DateCustomerAppear
2021-01-01A1
2021-01-01B1
2021-01-01C1
2021-02-01A2
2021-02-01B2
2021-02-01C2
2021-03-01A3
2021-03-01B3
2021-03-01C3
2021-04-01A4
2021-04-01B4
2021-05-01A5
2021-05-01B5
2021-06-01A6

不管客户是不是在所有日期都出现,每次出现都会按他自己的出现顺序生成连续编号,完美匹配你想要的效果~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 12:07:28