熊猫:如何使用“ DatetimeIndex”处理时区偏移

时间:2019-07-03 00:15:25

标签: python pandas dataframe datetime

(Not a duplicate question)

在这个问题上,我正在使用Python3Pandas

在我的原始数据集中,datetime位于GMT

datetime格式:2017-01-01 00:00:00

我通过以下操作将GMT datetime转换为EST

df['Gmt time'] = df['Gmt time'].dt.tz_localize('GMT').dt.tz_convert('America/New_York')

新的datetime现在看起来像这样:

2016-12-31 19:00:00-05:00

现在,当我这样做时:

df['Gmt time'] = pd.DatetimeIndex(df['Gmt time'])

我收到此错误:

TypeError: [datetime.datetime(2016, 12, 31, 19, 0, tzinfo=tzoffset(None, -18000))

我试图通过以下方法对其进行修复:

df['Gmt time'] = pd.DatetimeIndex(df['Gmt time'], tz='EST')冒充datetimeEST

那是行不通的。我如何解决它?我需要结束日期时间在EST

1 个答案:

答案 0 :(得分:2)

尝试使用pytz,将其保存为太平洋数据并将其转换为东部,您可以使用pytz并将其从GMT转换为任何时区。

import pandas as pd
import pytz
data = ['2017-01-01 00:00:00']
datatf= pd.to_datetime(data)
my_timestamp = dt.datetime.now()
new_timezone = pytz.timezone("US/Pacific")
old_timezone = pytz.timezone("US/Eastern")
my_timestamp_in_new_timezone = old_timezone.localize(datatf[0]).astimezone(new_timezone)
print(my_timestamp_in_new_timezone )
df = pd.DataFrame()
df['Gmt time'] = [my_timestamp_in_new_timezone]
df['Gmt time'] = pd.DatetimeIndex(df['Gmt time'])
print(df)

结果:

               Gmt time
0 2016-12-31 21:00:00-08:00