首页 文章

在pandas.Series中将时间戳转换为datetime.datetime

提问于
浏览
2

我有pandas系列,其中index是整数列表(时间戳),如何将它们转换为datetime.datetime(带时区)比低于原始转换更有效?

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

2 回答

  • 1
    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
    
  • 4
    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
    

相关问题