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

如何在DataFrame中计算日期差并排除每组首个条目

按Car_code分组计算日期差的实现方案

原始数据集

import pandas as pd

df = pd.DataFrame([['x','iii-2019-10-16','18/07/2019'],
                   ['x','iii-2019-10-16','21/04/2019'],
                   ['x','iii-2019-10-16','12/09/2019'],
                   ['x','zzz-2020-10-25','12/04/2022'],
                   ['y','qqq-2018-05-28','10/12/2020'], 
                   ['y','qqq-2018-05-28','15/02/2018'],
                   ['y','ooo-2019-11-22','30/05/2019'],
                   ['y','rrr-16-12-2020','16/12/2020'],
                   ['z','ppt-2019-12-03','07/02/2018'],
                   ['z','ttt-2019-12-03','28/05/2019'],
                   ['z','ttt-2019-12-03','09/09/2019'],
                   ['z','ttt-2019-12-03','30/09/2019']
                  ],
                  columns=['Car_code','customer_rent_code','Rent_Date'])

需求

按Car_code分组,计算每组内相邻条目的日期差(单位:天),每组首个条目日期差留空。

实现代码

# 把字符串格式的日期转成Pandas可识别的日期类型,注意原始格式是日/月/年
df['Rent_Date'] = pd.to_datetime(df['Rent_Date'], format='%d/%m/%Y')

# 分组后先对每组内的日期排序,再计算相邻日期的天数差
df['Date_Diff'] = df.groupby('Car_code')['Rent_Date'].apply(lambda x: x.sort_values().diff().dt.days)

# 打印结果
print(df)

预期结果

Car_codecustomer_rent_codeRent_DateDate_Diff
xiii-2019-10-162019-04-21NaN
xiii-2019-10-162019-07-1888
xiii-2019-10-162019-09-1256
xzzz-2020-10-252022-04-12608
yqqq-2018-05-282018-02-15NaN
yooo-2019-11-222019-05-30469
yrrr-16-12-20202020-12-16566
yqqq-2018-05-282020-12-10-6
zppt-2019-12-032018-02-07NaN
zttt-2019-12-032019-05-28475
zttt-2019-12-032019-09-09104
zttt-2019-12-032019-09-3021

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:23:23