【问题标题】:Use pytz to convert pandas dataframe column with timestamps from UTC to local timezone?使用 pytz 将带有时间戳的 pandas 数据框列从 UTC 转换为本地时区?
【发布时间】:2020-11-26 16:59:12
【问题描述】:

我有一个带有时间戳数据的表格,如下所示:

如何使用 pytz 模块将整个 TimeStamp 列从 UTC 转换为本地时间?输入是 IANA 格式的时区,例如。 “欧洲/伦敦”。该表存储在 pandas 数据框中。

【问题讨论】:

  • 表格的原始格式是什么,Excel?然后将其加载到熊猫df中?您的列“TimeStamp”的 dtype 是什么?
  • @MrFuppes 原始格式是 Microsoft Power BI 表,它是通过对数据库的 SQL 查询生成的。 TImeStamp 列的数据类型是 Microsoft DateTime / DateTimeZone。在底层,Power BI 和 Excel 非常相似。

标签: python pandas timezone pytz


【解决方案1】:

你真的需要 pytz 模块吗?您可以在 pandas 中使用tz 信息。

例如。可以这样做:

df['timestamp'] = df['timestamp'].dt.tz_localize('UTC').dt.tz_convert('Europe/London')

您可能想在此处查看更多详细信息: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.tz_convert.html

【讨论】:

  • 如果被 pd.to_datetime 读取,OP 截图上的时间戳应该已经转换为 UTC;像df['local_time'] = pd.to_datetime(df['TimeStamp']).dt.tz_convert('Europe/London') 这样的东西应该做。
  • 这确实看起来应该可以工作,但我收到一长串错误消息。我对熊猫不是很有经验,也不确定可以从中学到什么。看来我首先需要转换当前是微软日期时间格式的时间戳格式。 DataSource.Error:ADO.NET:Python 脚本错误。 Traceback(最近一次调用):ValueError: Array must be all the same time zone
  • @MrFuppes 您的解决方案效果很好,谢谢。
猜你喜欢
  • 2014-10-05
  • 2015-05-10
  • 2019-03-09
  • 2021-06-25
  • 2019-08-15
  • 1970-01-01
  • 2018-04-17
  • 2015-04-20
  • 2017-03-10
相关资源
最近更新 更多