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

如何将DataFrame中datetime64类型的时间戳列转为数值?

将DataFrame的datetime时间戳列转换为数值类型的方法

嗨,针对你这个需求,我整理了几种实用的方法来把df里datetime64类型的Time列转换成数值类型:

方法1:直接转换为底层整数表示(纳秒级)

Pandas的datetime64类型底层是用int64存储的,对应从1970-01-01 00:00:00 UTC开始的纳秒数。你可以直接用astype()转换:

# 添加新列存储数值化的时间戳
df['Time_numeric'] = df['Time'].astype('int64')

转换后Time_numeric列会是类似1526323200000000000这样的大整数。

如果想要更常用的秒级时间戳,只需要把纳秒数除以10^9即可:

df['Time_seconds'] = df['Time'].astype('int64') // 10**9

这样得到的就是从epoch时间开始的秒数,比如1526323200。

方法2:使用view()查看底层数值

和astype()效果类似,view()可以直接读取datetime的底层int64存储值:

df['Time_numeric'] = df['Time'].view('int64')

方法3:计算相对时间的数值(自定义基准)

如果不需要epoch时间戳,而是想要相对于某个起始点的时间差数值(比如秒、分钟),可以先计算时间差再转换:

# 以数据中的最早时间为基准
start_time = df['Time'].min()
# 计算每个时间点距离起始时间的总秒数
df['Time_since_start'] = (df['Time'] - start_time).dt.total_seconds()

比如你的数据里第一个时间是2018-05-15 00:00:00,那么第二个时间2018-05-15 00:15:00对应的数值就是900(15分钟=900秒)。

示例转换后的DataFrame

用方法1转换后,你的df会变成这样:

Time  Count       Time_numeric  Time_seconds
0 2018-05-15 00:00:00      4  1526323200000000000    1526323200
1 2018-05-15 00:15:00      1  1526324100000000000    1526324100
2 2018-05-15 00:30:00      5  1526325000000000000    1526325000
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:04:38