如何在 python 中最好地调整带有时区的时间戳?
Posted
技术标签:
【中文标题】如何在 python 中最好地调整带有时区的时间戳?【英文标题】:How do I best adjust a timestamp with a timezone in python? 【发布时间】:2016-09-10 23:39:30 【问题描述】:我需要对我的 pandas 数据框中的日期进行操作,但我的代码有一个错误。具体来说,我正在从 csv 文件中导入一列时间戳。
x['Created at']
0 2016-05-13 13:28:41 -0400
1 2016-05-13 05:11:18 -0400
3 2016-05-12 18:06:42 -0400
4 2016-05-12 16:06:24 -0400
5 2016-05-12 13:58:01 -0400
6 2016-05-12 03:30:27 -0400
然后我将此数据更改为日期时间。我正在通过pandas.to_datetime(df['date'])
执行此操作,但是当我执行此操作时,时间会偏移 4 小时。
x.Createdat
0 2016-05-13 17:28:41
1 2016-05-13 09:11:18
3 2016-05-12 22:06:42
4 2016-05-12 20:06:24
5 2016-05-12 17:58:01
6 2016-05-12 07:30:27
我假设这是因为时间戳末尾的-0400
,但我无法找出解决此问题的最佳方法,因此我可以在我自己的时区汇总这些数据。
【问题讨论】:
【参考方案1】:如果 -400 是您不需要或不想要的信息,那么只需将您对 pandas.to_datetime(df['date'])
的使用更改为 pandas.to_datetime(df['date'].apply(lambda x: x[:-6])
,这将从字符串中删除 -400。不是最好和最强大的方法,但它会起作用。
如果您想使用 -400 但又想将其转换为不同的时区,请查看tz_localize
,如以下答案所述:convert gmt to local timezone in pandas
另一个应该有帮助的工具是使用pytz
:pytz - Converting UTC and timezone to local time
【讨论】:
以上是关于如何在 python 中最好地调整带有时区的时间戳?的主要内容,如果未能解决你的问题,请参考以下文章
Python:如何将日期时间/时间戳从一个时区转换为另一个时区?
在带有 C 扩展名的 Postgres DB 中使用时区存储时间戳?