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

如何在pandas DataFrame中合并两列时间数据生成%H-%M格式时间列

方案1:基于你当前已转换完成的列直接合并

你已经单独将小时、分钟列转为了datetime类型,只需要分别提取对应时间分量拼接格式化即可:

# 提取小时、分钟分量,拼接为 %H-%M 格式
data["start"] = data["start1"].dt.hour.astype(str) + "-" + data["start2"].dt.minute.astype(str).str.zfill(2)
# 结束时间列合并逻辑同理
data["end"] = data["end1"].dt.hour.astype(str) + "-" + data["end2"].dt.minute.astype(str).str.zfill(2)

其中str.zfill(2)作用是将不足两位的分钟值补前导0,比如5会转为05,符合标准时间格式要求。


方案2:更高效的预处理方案(推荐)

不需要单独对小时、分钟列做datetime转换,读入数据后直接拼接两列再做时间转换,代码更简洁:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from datetime import timedelta

# 导入数据
data = pd.read_csv('TEST.csv')

# 直接拼接时分列后转换,若CSV中start1、start2为数值类型,先加.astype(str)转字符串即可
data["start"] = pd.to_datetime(data["start1"] + ":" + data["start2"], format="%H:%M").dt.strftime("%H-%M")
data["end"] = pd.to_datetime(data["end1"] + ":" + data["end2"], format="%H:%M").dt.strftime("%H-%M")

如果你后续制作甘特图需要使用datetime类型而非字符串格式,移除末尾的.dt.strftime("%H-%M")即可,得到的时间对象直接适配matplotlib甘特图的时间轴参数。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:54:03