python - pandas 中是否有一个函数可以转换以 CST 作为时区的时间戳?
问题描述
我有一个数据框,它在不同的列中有 time_zone 和 date。我想得到time_zone对应的当地时间。
我的数据框如下:
df = pd.DataFrame({'CREATED_DT':['2017-01-01 20:24:21','2017-01-01 21:10:54','2017-01-02 11:48:12','2017-01-02 19:30:53','2017-01-02 21:06:55'],
'Time_Zone':['EST','EST','CET','EST','CST']})
df['CREATED_DT'] = pd.to_datetime(df['CREATED_DT']).dt.tz_localize('UTC')
我已将创建日期转换为 UTC,并且 time_zone 位于不同的列中。我想获取时区对应的当地时间。所以它的代码是:
df['Local_Time'] = df.apply(lambda x: x['CREATED_DT'].tz_convert(x['timezone']), axis = 1)
如果 time_zone 是 EST,CET 但给 CST 一个错误,它会显示:
UnknownTimeZoneError: ('CST', u'occurred at index 4')
我不确定除了硬编码之外是否有其他方法来处理这个问题......请建议是否有任何其他库或函数可以使用?
解决方案
CST 作为时区之所以会报错,是因为它可以引用 3 个不同的时区:中部标准时间,即北美的中部时区(UTC -0600)、中国标准时间(UTC +0800)和古巴标准时间( UTC -0400)。我假设您想使用中央标准时间。
收敛时间的一种简单方法是使用pytz 库,它有一个不断更新的大多数时区数据库。
在您的情况下,将日期转换为时区的行可以更改为以下行:
import pytz
df['Local_Time'] = df.apply(lambda x: pytz.timezone("US/Central" if x['Time_Zone'] == 'CST' else x['Time_Zone']).normalize(x['CREATED_DT']), axis = 1)
(旁注:在pytz中,
中央标准时间'US/Central'
是在这一点上,它是一个函数而不是 lambda。'Asia/Shanghai'
'Cuba'
推荐阅读
- php - ACF 自定义字段的 WordPress 用户查询?
- scheme - 以各种方式创建列表
- sharepoint - 使用 PNP 创建日历新式视图
- python - 模块“tensorflow.compat.v2.__internal__”没有属性“tf2”
- c# - 查找最赚钱的产品范围
- php - ACF - 分类 | 通过自定义数字帖子类型在管理员 WP 上查找 - 导入 Xml | WordPress
- vue.js - 如何使用vue在for循环中为svg元素设置动画?
- elasticsearch - 通过别名使用索引模板创建时间序列索引
- azure - 如何在 Azure DevOps 中下载测试用例的测试步骤附件
- typescript - 带有 TS 的 JSDoc - 在智能感知中显示返回接口注释?