(Not a duplicate question)
在这个问题上,我正在使用Python3
和Pandas
在我的原始数据集中,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')
冒充datetime
在EST
中
那是行不通的。我如何解决它?我需要结束日期时间在EST
答案 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