将纪元时间戳列转换为带有时区的日期时间

Posted

技术标签:

【中文标题】将纪元时间戳列转换为带有时区的日期时间【英文标题】:Convert column of epoch timestamps to datetime with timezone 【发布时间】:2019-08-22 07:15:18 【问题描述】:

我的 Jupyter 笔记本中有一个数据框,其中有一列纪元时间戳,它看起来像这样:

 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】:

pd.to_datetimeunit='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

【讨论】:

我们如何从时间戳中删除 +08:00 ? @Pranav101py 在tz_convert 之后的末尾添加.dt.tz_localize(None)

以上是关于将纪元时间戳列转换为带有时区的日期时间的主要内容,如果未能解决你的问题,请参考以下文章

如何将日期时间(在特定时区)转换为纪元秒

带有时区和夏令时的纪元的日期和时间(以秒为单位)

python - 带有时区的日期时间到纪元

将时间戳转换为特定时区然后在 bigquery 中将其转换为日期时出现问题

将UTC时间戳转换为熊猫中的本地时区问题

在 Google 表格中将 Unix 纪元时间转换为日期