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

在Pandas中根据start_time条件为指定列添加1小时时间增量

解决方案

要实现需求,需先将字符串格式的时间转换为可运算的datetime类型,完成时间增量操作后再转回原格式,具体步骤如下:

  1. 转换时间列为datetime类型
    原数据中的start_time和end_time是字符串,无法直接进行时间比较与运算,先转为datetime对象:
import pandas as pd
from datetime import timedelta

# 初始化原DataFrame
df = pd.DataFrame([["A","9:00 AM","10:20 AM"],["A","11:12 AM","12:32 PM"],["A","1:03 PM","1:33 PM"],["A","1:34 PM","2:44 PM"],["B","9:00 AM","12:20 PM"],["B","12:56 PM","1:06 PM"],["B","1:07 PM","1:17 PM"],["B","1:18 PM","1:28 PM"]],columns=["id","start_time","end_time"])

# 转换时间列格式
df['start_time'] = pd.to_datetime(df['start_time'], format='%I:%M %p')
df['end_time'] = pd.to_datetime(df['end_time'], format='%I:%M %p')
  1. 筛选目标行并添加时间增量
    创建条件筛选出start_time大于等于12:30 PM的行,对这些行的start_time和end_time各增加1小时:
# 定义筛选条件
condition = df['start_time'] >= pd.to_datetime('12:30 PM', format='%I:%M %p')

# 为符合条件的行添加1小时时间增量
df.loc[condition, ['start_time', 'end_time']] += timedelta(hours=1)
  1. 转回原字符串格式
    将处理后的datetime类型转回原有的"HH:MM AM/PM"字符串格式,同时去掉小时前的前导零以匹配期望输出:
df['start_time'] = df['start_time'].dt.strftime('%I:%M %p').str.lstrip('0')
df['end_time'] = df['end_time'].dt.strftime('%I:%M %p').str.lstrip('0')

完整代码

import pandas as pd
from datetime import timedelta

# 初始化数据
df = pd.DataFrame([["A","9:00 AM","10:20 AM"],["A","11:12 AM","12:32 PM"],["A","1:03 PM","1:33 PM"],["A","1:34 PM","2:44 PM"],["B","9:00 AM","12:20 PM"],["B","12:56 PM","1:06 PM"],["B","1:07 PM","1:17 PM"],["B","1:18 PM","1:28 PM"]],columns=["id","start_time","end_time"])

# 转换为datetime类型
df['start_time'] = pd.to_datetime(df['start_time'], format='%I:%M %p')
df['end_time'] = pd.to_datetime(df['end_time'], format='%I:%M %p')

# 筛选并添加时间增量
condition = df['start_time'] >= pd.to_datetime('12:30 PM', format='%I:%M %p')
df.loc[condition, ['start_time', 'end_time']] += timedelta(hours=1)

# 转回字符串格式
df['start_time'] = df['start_time'].dt.strftime('%I:%M %p').str.lstrip('0')
df['end_time'] = df['end_time'].dt.strftime('%I:%M %p').str.lstrip('0')

print(df)

运行后即可得到你需要的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 22:45:28