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

如何用Pandas计算员工跨工作日班次间的休息时长

跨工作日休息时长计算方案

数据修正说明

原数据中Alice的2022-01-65 12:30:00为无效日期,需先修正为2022-01-16 12:30:00,否则无法进行日期相关计算。

实现步骤与代码

  1. 数据初始化与类型转换
    先将原始数据转为DataFrame,并把shift_start和shift_end转换为datetime类型,同时提取日期字段用于后续按日分组。
import pandas as pd

# 修正无效日期后的原始数据
data = {
    'worker': ['Alice', 'Alice', 'Alice', 'Alice', 'Alice', 'Bob', 'Bob', 'Bob', 'Bob', 'Bob'],
    'shift_start': ['2022-01-15 11:30:00', '2022-01-15 17:30:00', '2022-01-15 18:30:00', '2022-01-16 10:30:00', '2022-01-16 12:30:00',
                   '2022-01-15 10:30:00', '2022-01-15 12:30:00', '2022-01-15 15:30:00', '2022-01-17 10:30:00', '2022-01-17 16:30:00'],
    'shift_end': ['2022-01-15 15:30:00', '2022-01-15 18:29:59', '2022-01-15 20:30:00', '2022-01-16 11:29:59', '2022-01-16 15:30:00',
                 '2022-01-15 12:29:59', '2022-01-15 14:30:00', '2022-01-15 18:30:00', '2022-01-17 15:30:00', '2022-01-17 18:30:00'],
    'function': ['A', 'A', 'B', 'B', 'A', 'B', 'A', 'A', 'A', 'B']
}

df = pd.DataFrame(data)
# 转换为datetime类型
df['shift_start'] = pd.to_datetime(df['shift_start'])
df['shift_end'] = pd.to_datetime(df['shift_end'])
# 提取日期字段
df['date'] = df['shift_start'].dt.date
  1. 计算每日首尾班次时间
    按员工和日期分组,统计每个员工每日的第一班开始时间和最后一班结束时间。
daily_summary = df.groupby(['worker', 'date']).agg(
    daily_first_start=('shift_start', 'min'),
    daily_last_end=('shift_end', 'max')
).reset_index()
  1. 计算跨日休息时长
    对每个员工的每日数据按日期排序,用当日首班开始时间减去前一日末班结束时间,得到跨日休息时长,首次工作日的休息时长自动为NaN。
daily_summary['break_time'] = daily_summary.groupby('worker').apply(
    lambda x: x['daily_first_start'] - x['daily_last_end'].shift(1)
).reset_index(drop=True)
  1. 映射回原数据
    将计算好的休息时长合并回原始DataFrame,确保同一工作日的所有班次都显示相同的休息时长。
df = df.merge(daily_summary[['worker', 'date', 'break_time']], on=['worker', 'date'], how='left')
# 清理临时字段
df = df.drop('date', axis=1)

结果验证

运行后得到的结果中:

  • Alice 2022-01-16的所有班次break_time为0 days 14:00:00
  • Bob 2022-01-17的所有班次break_time为1 days 16:00:00
    完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:25:19