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

如何合并Pandas DataFrame的日期列与时间列生成新datetime列?

解决Pandas合并日期和时间列的问题

嘿,我来帮你搞定这个合并日期和时间列的需求!根据你描述的情况——Date是datetime64[ns]类型(实际是Timestamp对象),Time Start (UTM)是object类型但底层是datetime.time对象,这里有两种靠谱的方法:

方法1:直观的逐行处理(适合小数据集)

这种方法逻辑简单,直接把日期和时间转成字符串拼接后再转回datetime:

df['New Column'] = df.apply(
    lambda row: pd.to_datetime(f"{row['Date'].date()} {row['Time Start (UTM)']}"),
    axis=1
)

原理是:row['Date'].date()提取出纯日期部分(比如2018-04-10),和时间字符串(比如13:03:00)拼接后,用pd.to_datetime转成完整的datetime对象。

方法2:高效的向量运算(适合大数据集)

如果你的DataFrame行数很多,逐行apply效率会偏低,推荐用时间差的方式来合并,速度快很多:

# 先把时间列转成timedelta类型
df['time_delta'] = pd.to_timedelta(df['Time Start (UTM)'].astype(str))
# 提取Date的纯日期部分,加上时间差得到完整datetime
df['New Column'] = df['Date'].dt.floor('D') + df['time_delta']
# 可选:删除中间生成的time_delta列
df.drop('time_delta', axis=1, inplace=True)

这里df['Date'].dt.floor('D')会把Date的时间部分清零(变成2018-04-10 00:00:00),再加上转成timedelta的时间,就能精准得到合并后的datetime了。

两种方法最终都会生成你想要的New Column,类型为datetime64[ns],完全符合示例里的效果~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:09:32