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

在Pandas中按Mobile_Number分组计算Date列的日期累计差值

按手机号分组计算日期间隔

你需要实现的是对每个手机号的记录按日期排序后,计算当前日期与同组上一条日期的天数差,每组第一条记录的差值设为0。下面用Python的pandas库来完成这个需求:

实现步骤

  • 先将Date列转换为日期格式,确保能进行日期运算
  • 按Mobile_Number分组,对每组的Date进行排序(保证日期顺序正确)
  • 用diff()方法计算相邻日期的差值,将每组第一条的缺失差值填充为0,最后转换为整数天数

代码示例

import pandas as pd

# 原始数据
raw_data = {
    'Mobile_Number': ['0503477334', '0506002884', '0501022162', '0503477334', '0506002884', '0503477334'],
    'Date': ['2018-10-28', '2018-10-28', '2018-10-30', '2018-11-05', '2018-11-08', '2018-11-12']
}

df = pd.DataFrame(raw_data)

# 转换日期格式为可计算的datetime类型
df['Date'] = pd.to_datetime(df['Date'])

# 分组计算日期差值
df['Difference'] = df.groupby('Mobile_Number')['Date'].diff().dt.days.fillna(0).astype(int)

# 输出结果
print(df)

运行结果

Mobile_Number       Date  Difference
0    0503477334 2018-10-28           0
1    0506002884 2018-10-28           0
2    0501022162 2018-10-30           0
3    0503477334 2018-11-05           8
4    0506002884 2018-11-08          11
5    0503477334 2018-11-12           7

关键代码说明

  • pd.to_datetime(df['Date']):把字符串格式的日期转换为pandas的datetime类型,这是日期差值计算的前提
  • groupby('Mobile_Number')['Date'].diff():按手机号分组后,计算当前行与上一行的日期差,返回Timedelta类型结果
  • dt.days:将Timedelta类型的差值转换为天数(数值类型)
  • fillna(0):每组第一条记录没有上一行数据,差值为NaN,这里填充为0
  • astype(int):确保最终的差值是整数格式,符合你的期望结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:58:07