gpt4 book ai didi

python - pandas 是否有函数可以转换以 CST 作为时区的时间戳?

转载 作者:行者123 更新时间:2023-12-01 07:48:12 24 4
gpt4 key购买 nike

我有一个数据框,其中时区和日期位于不同的列中。我想获取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'发生在索引 4')

我不确定除了硬编码之外是否还有其他方法可以处理这个问题...请建议是否有任何其他库或函数可以使用?

最佳答案

CST 作为时区抛出错误的原因是它可以引用 3 个不同的时区:中部标准时间,即北美中部时区 (UTC -0600)、中国标准时间 (UTC +0800) 和古巴标准时间 (UTC -0400)。我假设您想使用中部标准时间。

收敛时间的一个简单方法是使用 pytz library ,它拥有大多数时区的不断更新的数据库。

在您的情况下,将日期转换为时区的行可以更改为以下行:

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',中国标准时间为 'Asia/Shanghai',古巴标准时间为 '古巴'。其他时间,您可以查看 this stackoverflow questionthis wikipedia page )
如果此时将其设为函数而不是 lambda,也可能会使代码更具可读性。

关于python - pandas 是否有函数可以转换以 CST 作为时区的时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56347361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com