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

时间:2019-07-04 19:03:44

标签: python-3.x pandas dataframe

我有一个datetimeEST

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))

您能帮我解决这个问题吗?

2 个答案:

答案 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]