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

Pandas如何根据时长列条件按固定时段拆分生成DataFrame新行

实现方法

按每日8小时工时拆分时长生成新行的完整实现逻辑如下,兼容总时长大于1440分钟的场景:

核心思路

  • 先将字符串格式的时间列转换为pandas可计算的datetime类型,注意原始时间为日-月-年格式,解析时需指定日期优先
  • 单天有效工时为480分钟(8小时*60分钟),用总时长除以单天工时向上取整,得到每条记录需要拆分的天数
  • 按拆分天数逐天生成对应日期的9:00-17:00时段记录,最后格式化输出为要求的时间字符串格式

完整代码

import pandas as pd
import numpy as np

# 原始DataFrame
data = {'startTime':['01-06-2010 09:00:00', '13-02-2016 09:00:00', '18-03-2018 09:00:00', '23-05-2011 09:00:00'], 
        'endTime':['02-06-2010 17:00:00', '14-02-2016 17:00:00', '19-03-2018 17:00:00', '24-05-2011 17:00:00'], 
        'durationInMinutes': [1440, 1440, 1440, 1440]}
df = pd.DataFrame(data)

# 1. 转换时间列为datetime类型,指定dayfirst=True适配日-月-年格式
df['startTime'] = pd.to_datetime(df['startTime'], dayfirst=True)
daily_work_min = 8 * 60  # 每日有效工时480分钟

# 2. 计算每条记录需要拆分的天数
df['split_days'] = (df['durationInMinutes'] / daily_work_min).apply(np.ceil).astype(int)

# 3. 按拆分天数展开行
df = df.assign(
    day_offset=df['split_days'].apply(lambda x: list(range(x)))
).explode('day_offset', ignore_index=True)

# 4. 生成拆分后的startTime、endTime
df['startTime'] = df.apply(
    lambda row: row['startTime'].normalize() + pd.Timedelta(days=row['day_offset'], hours=9), 
    axis=1
)
df['endTime'] = df['startTime'] + pd.Timedelta(hours=8)

# 5. 清理多余列,格式化为要求的字符串时间格式
df = df.drop(columns=['durationInMinutes', 'split_days', 'day_offset'])
df['startTime'] = df['startTime'].dt.strftime('%d-%m-%Y %H:%M:%S')
df['endTime'] = df['endTime'].dt.strftime('%d-%m-%Y %H:%M:%S')

输出验证

运行上述代码后输出结果和预期完全一致,前6行结果如下:

startTime               endTime
0  01-06-2010 09:00:00  01-06-2010 17:00:00
1  02-06-2010 09:00:00  02-06-2010 17:00:00
2  03-06-2010 09:00:00  03-06-2010 17:00:00
3  13-02-2016 09:00:00  13-02-2016 17:00:00
4  14-02-2016 09:00:00  14-02-2016 17:00:00
5  15-02-2016 09:00:00  15-02-2016 17:00:00

适配说明

  • 如果总时长不是480的整数倍,代码会自动向上取整生成对应天数的完整时段,若需要最后一天按时长截断endTime,可在生成endTime步骤增加时长判断逻辑
  • 拆分逻辑完全以durationInMinutes字段为准,不受原始endTime字段限制,和示例逻辑匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 02:30:15