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

Pandas按指定列分组后倒序计算行之间天数差的问题求解

解决代码
import pandas as pd

# 原有基础逻辑
df = pd.read_csv('../sample/sample.csv')
df['date'] = pd.to_datetime(df['date'])

# 分组计算倒序天数差核心逻辑
df['deltaT'] = df.groupby('group_id')['date'].apply(
    lambda x: x - x.shift(-1)
).dt.days.fillna(0)

# 若需要输出带「days」后缀的字符串格式,可追加下面这行代码
# df['deltaT'] = df['deltaT'].apply(lambda x: f"{x} days" if x != 0 else "0")
逻辑说明
  • 按group_id分组后,对每个分组内的日期列使用shift(-1),将下一行的日期移到当前行,实现从下到上倒序对比的需求
  • 用当前行日期减去下移后的下一行日期,得到的差值取天数属性,最后将每个分组最后一行的空值填0,完全匹配你需要的输出结果
原有尝试的问题
  1. 尝试1未加分组逻辑,会跨group_id计算差值,且shift()默认是把上一行内容移到当前行,计算方向和你要的倒序相反
  2. 尝试2的where()方法要求传入布尔数组作为判断条件,你直接传入了日期差的timedelta类型数据,类型不匹配触发报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:54:00