大熊猫日期时间到 Unix

数据挖掘 时间序列 熊猫
2021-09-25 23:14:01

我需要将 datetime.date(2007, 4, 30) 转换为 pandas 中的 Unix 时间戳。

谢谢。

我的数据表:

0     2007-04-30
1     2007-05-31
2     2007-06-30
3     2007-07-31
4     2007-08-31
Name: datetime, dtype: object
3个回答

终于解决了一些问题,但我想知道这是否是最好的解决方案?

dt = pd.DatetimeIndex ( dt ).astype ( np.int64 )/1000000

干杯。

使用view方法(文档):

from pandas import Series
from datetime import date
df = Series([date(2007,4,30), date(2007,5,31), date(2007,6,30), date(2007,7,31), date(2007,8,31)], dtype='datetime64')
df.view('int64')

输出是:

0    1177891200000000000
1    1180569600000000000
2    1183161600000000000
3    1185840000000000000
4    1188518400000000000
dtype: int64

这是我发现的最快的两种方法,并与它们各自的运行时一起显示。使用长度约为 30k 的序列对 1000 次迭代的结果进行平均。

df['date'].view('int64')

平均 运行时间:58us

df['date'].astype(np.int64)

平均 运行时间:98us

注意 1:根据您机器的架构(32 位与 64 位),pandas 和 numpy 可能以不同的单位存储时间。我已经看到有关版本之间行为变化的评论。

注意 2:在处理大型数据集时,请考虑使用无符号整数,因为您的时间始终为正数。此外,您可能不需要纳秒精度,在这种情况下转换为秒可能会允许进一步向下转换。