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

如何用Python计算同Kiosk下当前行与前一行跨列日期差值

计算同Kiosk下跨行列的日期差值

我需要计算不同行且不同列之间的日期差值,现有包含Kiosk、Online、Offline、Online Days字段的数据集:

KioskOnlineOfflineOnline Days
112/1/202212/5/20224
112/7/202212/17/202210
112/20/202212/21/20221
112/24/202212/29/20225
211/15/202211/30/202215
212/2/202212/7/20225
212/15/202212/25/202210
310/30/202211/15/202216
311/17/202211/22/20225
311/23/202211/30/20227
312/4/202212/15/202211
312/18/202212/20/20222

我知道可以使用diff()函数计算同一列内不同行的差值,但未找到可同时偏移行和列的函数。在本案例中,我需要针对同一Kiosk,计算当前行的Online日期与前一行的Offline日期的差值,将其作为Offline Days字段添加到数据集中。期望输出的数据集如下:

KioskOnlineOfflineOnline DaysOffline Days
112/1/202212/5/20224NaN
112/7/202212/17/2022102
112/20/202212/21/202213
112/24/202212/29/202253
211/15/202211/30/202215NaN
212/2/202212/7/202252
212/15/202212/25/2022108
310/30/202211/15/202216NaN
311/17/202211/22/202252
311/23/202211/30/202271
312/4/202212/15/2022114
312/18/202212/20/202223

初始DataFrame代码如下:

import pandas as pd

df = pd.DataFrame({
    'Kiosk': [1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3],
    'Online': ["12/1/2022", "12/7/2022","12/20/2022", "12/24/2022","11/15/2022", 
               "12/2/2022","12/15/2022", "10/30/2022","11/17/2022", "11/23/2022",
               "12/4/2022", "12/18/2022"],
    'Offline': ["12/5/2022", "12/17/2022","12/21/2022", "12/29/2022","11/30/2022", 
                "12/7/2022","12/25/2022", "11/15/2022","11/22/2022", "11/30/2022",
                "12/15/2022", "12/20/2022"],
    'Online Days': [4, 10, 1, 5, 15, 5, 10, 16, 5, 7, 11, 2],
})

解决方案

  1. 转换日期列类型:首先将字符串格式的日期转换为datetime类型,否则无法进行日期差值计算:
df['Online'] = pd.to_datetime(df['Online'])
df['Offline'] = pd.to_datetime(df['Offline'])
  1. 分组偏移并计算差值:按Kiosk分组,对Offline列执行行偏移(下移一行),再用当前行的Online日期减去偏移后的Offline日期,提取天数作为Offline Days:
# 对每个Kiosk组的Offline列下移一行,对应前一行的Offline值
df['Offline Days'] = df.groupby('Kiosk')['Offline'].shift(1)
# 计算日期差并提取天数
df['Offline Days'] = (df['Online'] - df['Offline Days']).dt.days

执行上述代码后,df的结果就与期望输出完全一致,每个Kiosk的第一行因为没有前一行数据,Offline Days会显示为NaN。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:48:08