Convert pandas DateTimeIndex to Unix Time?

后端 未结 6 1643
故里飘歌
故里飘歌 2020-11-28 06:22

What is the idiomatic way of converting a pandas DateTimeIndex to (an iterable of) Unix Time? This is probably not the way to go:

[time.mktime(t.timetuple()         


        
6条回答
  •  清歌不尽
    2020-11-28 07:09

    As DatetimeIndex is ndarray under the hood, you can do the conversion without a comprehension (much faster).

    In [1]: import numpy as np
    
    In [2]: import pandas as pd
    
    In [3]: from datetime import datetime
    
    In [4]: dates = [datetime(2012, 5, 1), datetime(2012, 5, 2), datetime(2012, 5, 3)]
       ...: index = pd.DatetimeIndex(dates)
       ...: 
    In [5]: index.astype(np.int64)
    Out[5]: array([1335830400000000000, 1335916800000000000, 1336003200000000000], 
            dtype=int64)
    
    In [6]: index.astype(np.int64) // 10**9
    Out[6]: array([1335830400, 1335916800, 1336003200], dtype=int64)
    
    %timeit [t.value // 10 ** 9 for t in index]
    10000 loops, best of 3: 119 us per loop
    
    %timeit index.astype(np.int64) // 10**9
    100000 loops, best of 3: 18.4 us per loop
    

提交回复
热议问题