将一列Epoch时间戳转换为带有时区的日期时间

4

我的Jupyter笔记本中有一个数据框,其中包含一列epoch时间戳,它长这样:

 Name    stop      ts            remark
 A       01        1546470653    -
 B       032       1546470969    Not listed
 C       022       1546471069    Not listed
 D       045       1546471238    Not listed

我想做的是将纪元时间戳转换为可读的日期和时间,同时带有时区 (UTC+8),结果应该如下所示:
 Name    stop      ts            remark       timestamp
 A       01        1546470653    -            2019-01-03T07:10:53+08:00
 B       032       1546470969    Not listed   2019-01-03T07:16:09+08:00
 C       022       1546471069    Not listed   2019-01-03T07:17:49+08:00
 D       045       1546471238    Not listed   2019-01-03T07:20:38+08:00

有人能帮我实现这个吗?非常感谢!

1个回答

10

使用 pd.to_datetime 函数并指定 unit='s' 即可将时间戳转换为日期格式。然后可以使用 tz_* 相关方法来设置时区。

df['timestamp'] = (pd.to_datetime(df['ts'], unit='s')
                     .dt.tz_localize('utc')
                     .dt.tz_convert('Asia/Hong_Kong'))    
df

  Name  stop          ts      remark                 timestamp
0    A     1  1546470653           - 2019-01-03 07:10:53+08:00
1    B    32  1546470969  Not listed 2019-01-03 07:16:09+08:00
2    C    22  1546471069  Not listed 2019-01-03 07:17:49+08:00
3    D    45  1546471238  Not listed 2019-01-03 07:20:38+08:00

1
我们如何从时间戳中删除+08:00? - Pranav101py
1
@Pranav101py 在 tz_convert 后面添加 .dt.tz_localize(None) - cs95
当我运行这个时,我需要移除 'dt',但其他方面都完美。 - John Conor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接