如何在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_code | customer_rent_code | Rent_Date | Date_Diff |
|---|---|---|---|
| x | iii-2019-10-16 | 2019-04-21 | NaN |
| x | iii-2019-10-16 | 2019-07-18 | 88 |
| x | iii-2019-10-16 | 2019-09-12 | 56 |
| x | zzz-2020-10-25 | 2022-04-12 | 608 |
| y | qqq-2018-05-28 | 2018-02-15 | NaN |
| y | ooo-2019-11-22 | 2019-05-30 | 469 |
| y | rrr-16-12-2020 | 2020-12-16 | 566 |
| y | qqq-2018-05-28 | 2020-12-10 | -6 |
| z | ppt-2019-12-03 | 2018-02-07 | NaN |
| z | ttt-2019-12-03 | 2019-05-28 | 475 |
| z | ttt-2019-12-03 | 2019-09-09 | 104 |
| z | ttt-2019-12-03 | 2019-09-30 | 21 |
内容的提问来源于stack exchange,提问作者Natali
相关产品推荐
相关产品推荐

