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

基于Pandas为客户访问表添加总访问次数与时间排序访问排名列

客户访问记录新增统计列解决方案

需求说明

现有客户访问记录表,需新增两列:

  • Total_Visits:记录每个客户的总访问次数
  • Visit_Rank:按访问时间从早到晚排序的客户内部访问排名

示例数据

import pandas as pd

df = pd.DataFrame([[1,'xx','2011-10-10'],
                   [2,'xx','2010-10-10'],
                   [3,'yy','2014-10-10'],
                   [4,'yy','2013-10-10'],
                   [5,'yy','2015-10-10'],
                   [6,'zz','2009-10-10']
                  ],
                  columns=['ID','Customer_ID','Visit_Date'])

预期结果

处理后的数据表如下:

IDCustomer_IDVisit_DateTotal_VisitsVisit_Rank
1xx2011-10-1022
2xx2010-10-1021
3yy2014-10-1032
4yy2013-10-1031
5yy2015-10-1033
6zz2009-10-1011

实现代码

# 转换日期格式为datetime类型,确保排序准确
df['Visit_Date'] = pd.to_datetime(df['Visit_Date'])

# 计算每个客户的总访问次数,映射到每一行
df['Total_Visits'] = df.groupby('Customer_ID')['Customer_ID'].transform('count')

# 按客户分组,对访问时间升序排名,method='first'保证同日期时按原顺序排名
df['Visit_Rank'] = df.groupby('Customer_ID')['Visit_Date'].rank(method='first', ascending=True).astype(int)

代码说明

  1. 日期转换:将Visit_Date转为datetime类型,避免字符串排序带来的逻辑错误;
  2. 总访问次数:通过groupby按客户分组后计数,transform方法确保每个客户的所有行都能同步获取总访问次数;
  3. 访问排名:按客户分组后对访问时间升序排名,method='first'处理可能的同日期场景,保证排名唯一且符合数据原始顺序,最后转为整数类型让结果更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:55:06