我有一个datetime
列EST
EST
2017-01-01 19:00:00-05:00
2017-01-01 19:01:00-05:00
2017-01-01 19:02:00-05:00
2017-01-01 19:03:00-05:00
2017-01-01 19:05:00-05:00
2017-01-01 19:06:00-05:00
....
2017-12-31 23:01:00-05:00
在这里您可以看到每次都有尾随-05:00
。当我从-05:00
转换为GMT
时,添加了结尾的EST
。
如何删除-05:00
?
原因是因为当我这样做:
df['EST'] = pd.DatetimeIndex(df['EST']')
我收到此错误:
TypeError: [datetime.datetime(2017, 12, 31, 19, 0, tzinfo=tzoffset(None, -18000))
您能帮我解决这个问题吗?
答案 0 :(得分:1)
我们可以使用Series.dt.tz_localize
删除-05:00
并将其设置为None
。然后我们可以使用pd.to_datetime
:
df['EST'] = pd.to_datetime(df['EST']).dt.tz_localize(None)
EST
0 2017-01-01 19:00:00
1 2017-01-01 19:01:00
2 2017-01-01 19:02:00
3 2017-01-01 19:03:00
4 2017-01-01 19:05:00
5 2017-01-01 19:06:00
6 2017-12-31 23:01:00
如果EST
是您的索引,请使用:
df.index = pd.DatetimeIndex(df['EST']).dt.tz_localize(None)
答案 1 :(得分:1)
我认为您可以将.dt.tz_localize
与选项None
一起使用,假设您的EST
列已经是datetime
dtype
样本数据:
df['EST']:
0 2017-01-01 19:00:00-05:00
1 2017-01-01 19:01:00-05:00
2 2017-01-01 19:02:00-05:00
3 2017-01-01 19:03:00-05:00
4 2017-01-01 19:05:00-05:00
5 2017-01-01 19:06:00-05:00
Name: EST, dtype: datetime64[ns, US/Eastern]
输出为.dt.tz_localize
df['EST'].dt.tz_localize(None)
Out[2386]:
0 2017-01-01 19:00:00
1 2017-01-01 19:01:00
2 2017-01-01 19:02:00
3 2017-01-01 19:03:00
4 2017-01-01 19:05:00
5 2017-01-01 19:06:00
Name: EST, dtype: datetime64[ns]