【发布时间】:2020-02-14 02:45:27
【问题描述】:
我在下面有一个pandas.DatetimeIndex:
import pandas as pd
d_range = pd.date_range('2000-01-01', '2019-01-31')
m_idx = pd.MultiIndex.from_product([d_range, range(10000)], names=['date', 'id'])
d_idx = m_idx.get_level_values('date')
d_idx.shape
(69710000,)
有什么快速的方法可以将它转换为int 的numpy.ndarray,理想情况下代表1969-12-31 之后的天数?以及如何将 int 数组转换回numpy.datetime64?
更新:
在上面发布了我的真实用例,即 7000 万行 DatetimeIndex。 ansev's 答案有效,但运行需要相当长的时间。有没有更快的方法?
%timeit (d_idx - pd.to_datetime('1969-12-31')).days.values
每个循环 2.08 秒 ± 6.19 毫秒(平均值 ± 标准偏差,7 次运行,每个循环 1 个)
【问题讨论】: