代码之家  ›  专栏  ›  技术社区  ›  A l w a y s S u n n y

pandas datetime到unix时间戳秒

  •  5
  • A l w a y s S u n n y  · 技术社区  · 6 年前

    从官方文件 pandas.to_datetime 我们可以说,

    unit : string, default ‘ns’
    

    arg的单位(d,s,ms,us,ns)表示整数或 浮点数。这将基于原点。 例如,与 Unit=__,Origin=__Unix_(默认),这将计算 到Unix epoch开始的毫秒数。

    所以当我这样想的时候,

    import pandas as pd
    df = pd.DataFrame({'time': [pd.to_datetime('2019-01-15 13:25:43')]})
    df_unix_sec = pd.to_datetime(df['time'],unit='ms',origin='unix')
    print(df)
    print(df_unix_sec)
    
                     time
    0   2019-01-15 13:25:43
    0   2019-01-15 13:25:43
    Name: time, dtype: datetime64[ns]
    

    以后的输出没有变化。每次它显示的是日期时间值,而不是到第二个unix epoch开始的毫秒数。为什么?我错过什么了吗?

    1 回复  |  直到 6 年前
        1
  •  4
  •   cs95 abhishek58g    6 年前

    我认为你误解了论点的意义。目的 origin='unix' 是转换整数时间戳 datetime 而不是相反。

    pd.to_datetime(1.547559e+09, unit='s', origin='unix') 
    # Timestamp('2019-01-15 13:30:00')
    

    相反,您可以通过转换为整数(以获得纳秒)并除以10来获得时间戳。 .

    pd.to_datetime(['2019-01-15 13:30:00']).astype(int) / 10**9
    # Float64Index([1547559000.0], dtype='float64')