【问题标题】:pandas dates to and from int熊猫日期往返 int
【发布时间】: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,)

有什么快速的方法可以将它转换为intnumpy.ndarray,理想情况下代表1969-12-31 之后的天数?以及如何将 int 数组转换回numpy.datetime64

更新

在上面发布了我的真实用例,即 7000 万行 DatetimeIndexansev's 答案有效,但运行需要相当长的时间。有没有更快的方法?

%timeit (d_idx - pd.to_datetime('1969-12-31')).days.values

每个循环 2.08 秒 ± 6.19 毫秒(平均值 ± 标准偏差,7 次运行,每个循环 1 个)

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    使用DatetimeIndex.dayspd.to_datetime减去转换为日期时间后:

    (d_idx-pd.to_datetime('1969-12-31')).days.to_numpy()
    

    输出

    array([10958, 10959, 10960, 10961, 10962, 10963, 10964, 10965, 10966,
           10967, 10968, 10969, 10970, 10971, 10972, 10973, 10974, 10975,
           10976, 10977, 10978, 10979, 10980, 10981, 10982, 10983, 10984,
           10985, 10986, 10987, 10988])
    

    或者:

    (d_idx-pd.to_datetime('1969-12-31')).days.values
    

    (d_idx-pd.to_datetime('1969-12-31'))
    
    #TimedeltaIndex(['10958 days', '10959 days', '10960 days', '10961 days',
    #                '10962 days', '10963 days', '10964 days', '10965 days',
    #                '10966 days', '10967 days', '10968 days', '10969 days',
    #                '10970 days', '10971 days', '10972 days', '10973 days',
    #                '10974 days', '10975 days', '10976 days', '10977 days',
    #                '10978 days', '10979 days', '10980 days', '10981 days',
    #                '10982 days', '10983 days', '10984 days', '10985 days',
    #                '10986 days', '10987 days', '10988 days'],
    #               dtype='timedelta64[ns]', freq=None)
    

    【讨论】:

    • 谢谢!但是有没有更快的方法?更新了我的问题。
    • 老实说,我认为这是最好的
    猜你喜欢
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 2019-07-19
    • 2021-11-12
    • 2012-04-11
    • 2018-05-01
    相关资源
    最近更新 更多