【问题标题】:convert timestamp to datetime.datetime in pandas.Series在 pandas.Series 中将时间戳转换为 datetime.datetime
【发布时间】:2014-04-28 13:25:37
【问题描述】:

我有熊猫系列,其中索引是整数列表(时间戳),我如何将它们转换为 datetime.datetime(带时区)比以下原始转换更有效?

pd.Series(data=s.values, index=map(lambda x:datetime.datetime.fromtimestamp(x,tz=utc), s.index))

【问题讨论】:

    标签: python datetime pandas timestamp series


    【解决方案1】:
    In [49]: s = Series(range(10))
    

    使用to_datetime,您可以提供一个单位来选择整数的含义。

    In [50]: pd.to_datetime(s,unit='s')
    Out[50]: 
    0   1970-01-01 00:00:00
    1   1970-01-01 00:00:01
    2   1970-01-01 00:00:02
    3   1970-01-01 00:00:03
    4   1970-01-01 00:00:04
    5   1970-01-01 00:00:05
    6   1970-01-01 00:00:06
    7   1970-01-01 00:00:07
    8   1970-01-01 00:00:08
    9   1970-01-01 00:00:09
    dtype: datetime64[ns]
    
    In [51]: pd.to_datetime(s,unit='ms')
    Out[51]: 
    0          1970-01-01 00:00:00
    1   1970-01-01 00:00:00.001000
    2   1970-01-01 00:00:00.002000
    3   1970-01-01 00:00:00.003000
    4   1970-01-01 00:00:00.004000
    5   1970-01-01 00:00:00.005000
    6   1970-01-01 00:00:00.006000
    7   1970-01-01 00:00:00.007000
    8   1970-01-01 00:00:00.008000
    9   1970-01-01 00:00:00.009000
    dtype: datetime64[ns]
    
    In [52]: pd.to_datetime(s,unit='D')
    Out[52]: 
    0   1970-01-01
    1   1970-01-02
    2   1970-01-03
    3   1970-01-04
    4   1970-01-05
    5   1970-01-06
    6   1970-01-07
    7   1970-01-08
    8   1970-01-09
    9   1970-01-10
    dtype: datetime64[ns]
    

    创建一个系列就很简单了

    In [54]: Series(s.values,index=pd.to_datetime(s,unit='s'))
    Out[54]: 
    1970-01-01 00:00:00    0
    1970-01-01 00:00:01    1
    1970-01-01 00:00:02    2
    1970-01-01 00:00:03    3
    1970-01-01 00:00:04    4
    1970-01-01 00:00:05    5
    1970-01-01 00:00:06    6
    1970-01-01 00:00:07    7
    1970-01-01 00:00:08    8
    1970-01-01 00:00:09    9
    dtype: int64
    

    【讨论】:

      【解决方案2】:
      In [63]: s = pd.Series(range(10))
      
      In [64]: s.index = pd.DatetimeIndex(s.index.asi8*10**9, tz='utc')
      
      In [65]: s
      Out[65]: 
      1970-01-01 00:00:00+00:00    0
      1970-01-01 00:00:01+00:00    1
      1970-01-01 00:00:02+00:00    2
      1970-01-01 00:00:03+00:00    3
      1970-01-01 00:00:04+00:00    4
      1970-01-01 00:00:05+00:00    5
      1970-01-01 00:00:06+00:00    6
      1970-01-01 00:00:07+00:00    7
      1970-01-01 00:00:08+00:00    8
      1970-01-01 00:00:09+00:00    9
      dtype: int64
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-20
        • 2021-03-05
        相关资源
        最近更新 更多