Pd.to_datetime返回一个对象,而不是时间序列

时间:2019-10-10 15:52:18

标签: python pandas

我正在尝试将df中的列转换为时间序列。数据集来自2015年3月23日至2019年8月17日,数据集如下所示:

                        time    1day_active_users
0  2015-03-23 00:00:00-04:00              19687.0
1  2015-03-24 00:00:00-04:00              19437.0

我正在尝试将time列转换为datetime系列,但是它将列作为对象返回。这是代码:

data = pd.read_csv(data_path)
data.set_index('time', inplace=True)
data.index= pd.to_datetime(data.index)
data.index.dtype 

data.index.dtype返回dtype('O')。我认为这就是为什么当我尝试及时索引元素时它返回错误的原因。例如,当我运行此命令时:

data.loc['2015']

它给了我这个错误

KeyError: '2015'

任何帮助或反馈将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

如所评论,问题可能是由于不同的时区。尝试将utc=True传递到pd.to_datetime

df['time'] = pd.to_datetime(df['time'],utc=True)
df['time']

测试数据

                        time  1day_active_users
0  2015-03-23 00:00:00-04:00            19687.0
1  2015-03-24 00:00:00-05:00            19437.0

输出:

0   2015-03-23 04:00:00+00:00
1   2015-03-24 05:00:00+00:00
Name: time, dtype: datetime64[ns, UTC]

然后:

df.set_index('time', inplace=True)
df.loc['2015']

给予

                           1day_active_users
time                                        
2015-03-23 04:00:00+00:00            19687.0
2015-03-24 05:00:00+00:00            19437.0