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

Pandas中合并多列日期时间字段转换为纪元秒整数的方法

解决方案

最优实现(无需生成中间NewDate列)

你之前先单独转换日期列、再转字符串拼接的流程完全多余,pandas原生支持直接拼接两列字符串一次性解析为时间对象,性能远高于逐行lambda调用strptime,代码如下:

import pandas as pd

# 示例数据初始化
df = pd.DataFrame({
    'Date': ['18 Jun 2022', '18 Jun 2022', '15 Jun 2022'],
    'Time': ['10:22', '10:03', '21:34']
})

# 直接合并两列解析为时间,转epoch秒整数
df['epoch_seconds'] = (
    pd.to_datetime(df['Date'] + ' ' + df['Time'], format='%d %b %Y %H:%M')
    .astype('int64') // 10**9
)

运行后输出结果:

Date   Time  epoch_seconds
0  18 Jun 2022  10:22     1655547720
1  18 Jun 2022  10:03     1655546580
2  15 Jun 2022  21:34     1655328840
  • 格式符说明:%d匹配两位日期、%b匹配三位月份缩写、%Y匹配四位年份、%H:%M匹配24小时制的小时和分钟
  • 转换逻辑:pandas的datetime64类型默认存储epoch起算的纳秒级时间戳,整除10^9即可得到秒级整数值,无需额外时间计算。如果你的时间属于特定时区,可以在to_datetime后调用.dt.tz_localize('你的时区')再做转换,避免时区偏差。

基于你现有中间表的修复方法

如果你已经生成了NewDate的DateTime列,不需要把datetime转回字符串再拼接,直接给日期加上Time列对应的时间差即可:

# 将Time列转为时间差类型
time_offset = pd.to_timedelta(df['Time'] + ':00')
# 日期拼接时间后转epoch秒
df['epoch_seconds'] = (df['NewDate'] + time_offset).astype('int64') // 10**9

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:57:12