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

pandas转换YYYY-MM-DD HH:MM:SS时间为UNIX时间戳报错

问题说明

现有数据集的时间字段存储格式为YYYY-MM-DD HH:MM:SS,需要将该格式的时间转换为秒级UNIX时间戳(参考示例值:1655805822)。
最初尝试使用如下代码完成转换:

df['Timestamp'] = df['Timestamp'].astype(np.int64) // 1000000

代码运行触发报错,核心报错信息如下:

ValueError: invalid literal for int() with base 10: '2013-11-01 00:10:00'

报错本质是2013-11-01 00:10:00这类字符串格式的时间值,无法直接转换为int64类型整数。

正确实现方案

需要先将字符串格式的时间解析为pandas原生datetime类型,再转换为UNIX时间戳,常用实现如下:

  • 最简实现(无时区要求场景)
import pandas as pd
# 第一步:将字符串时间转为datetime类型;第二步:转秒级UNIX时间戳
df['Timestamp'] = pd.to_datetime(df['Timestamp']).astype('int64') // 10**9

注意:pandas中datetime类型转整数默认得到纳秒级时间戳,除以10**9即可得到常规秒级UNIX时间戳,和示例格式匹配。

  • 时区明确场景(避免本地时区偏移误差)
    如果需要统一使用UTC时区的时间戳,可以在转换时显式指定时区参数:
# 输出UTC时区对应的秒级UNIX时间戳
df['Timestamp'] = pd.to_datetime(df['Timestamp'], utc=True).astype('int64') // 10**9
原代码问题点
  1. 缺少字符串转datetime的中间步骤:直接对包含横杠、冒号、空格的时间字符串做整数类型转换,解释器无法识别这类非数字字符串为合法整数,直接触发值错误。
  2. 单位换算错误:原代码中// 1000000是微秒级时间戳转秒级的换算系数,但pandas datetime转整数默认是纳秒单位,正确换算系数应为10**9。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:12:21