首页 > 解决方案 > 如何使日期时间时区感知和转换时区

问题描述

我有 3 个包含多列的数据框,其中 2 个的日期时间是 UTC,另一个是“欧洲/阿姆斯特丹”。然而,他们仍然不知情。

如何使这些数据集时区感知,并将“欧洲/阿姆斯特丹”转换为 UTC?

日期时间在每个数据集的索引中。

标签: pythonpandasdataframepytz

解决方案


如果您使用的是 pandas Dataframes 和 Python 3,您可以这样做:

import pandas as pd

values = {'dates':  ['20190902101010','20190913202020','20190921010101'],
          'status': ['Opened','Opened','Closed']
          }

df = pd.DataFrame(values, columns = ['dates','status'])

df['dates_datetime'] = pd.to_datetime(df['dates'], format='%Y%m%d%H%M%S')

df['dates_datetime_tz'] = df.dates_datetime.dt.tz_localize('UTC').dt.tz_convert('Asia/Kolkata')

print (df)
print (df.dtypes)

结果:

            dates  status      dates_datetime         dates_datetime_tz
0  20190902101010  Opened 2019-09-02 10:10:10 2019-09-02 15:40:10+05:30
1  20190913202020  Opened 2019-09-13 20:20:20 2019-09-14 01:50:20+05:30
2  20190921010101  Closed 2019-09-21 01:01:01 2019-09-21 06:31:01+05:30

我已经从 UTC 转换为特定的 TZ,你可以选择任何你需要的。


推荐阅读