我需要将 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
我需要将 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
终于解决了一些问题,但我想知道这是否是最好的解决方案?
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:在处理大型数据集时,请考虑使用无符号整数,因为您的时间始终为正数。此外,您可能不需要纳秒精度,在这种情况下转换为秒可能会允许进一步向下转换。