如何用小时邮票作为索引切片熊猫系列?

时间:2017-10-30 15:09:18

标签: python dataframe timestamp time-series

这是我的时间序列:

Time
00:00:00    24.364387
00:01:00    24.509357
00:02:00    24.484649
00:03:00    24.476170
00:04:00    24.458480
00:05:00    24.439327
Name: Vals, dtype: float64

如何根据特定索引间隔访问值?比如myseries['00:02:00':'00:05:00']?我以为我必须把它们变成时间戳(但小时,分钟和秒)。

所以我把它变成了一个数据框:

df=pd.DataFrame({'Time':myseries.index, 'Vals':myseries.vals})

如果我输入df.dtypes,我会:

Vals            float64
Time            object
dtype: object

所以Time是一个对象,而不是datetime64[ns]。然后我尝试:df['Time'].dt.time然后我得到:AttributeError: Can only use .dt accessor with datetimelike values

如果我尝试:df.loc['00:00:00':'00:05:00'],我只会收到我的标题。我错过了什么?

3 个答案:

答案 0 :(得分:1)

您需要使用函数pd.to_datetime(Series)。这是代码:

df.Time = pd.to_datetime(df.Time)

df.dtypes
Time     datetime64[ns]
Vals           float64
dtype: object

答案 1 :(得分:1)

可能在您的情况下,您根本不需要转换。 将系列转换为数据帧时,请执行以下操作:

df = pd.DataFrame(myseries, columns=['Vals'])

然后尝试

df.loc['00:00:00':'00:05:00']

答案 2 :(得分:1)

这是我的尝试:

import datetime as dt myseries = pd.DataFrame([24.364387,24.509357,24.484649,24.476170,24.458480,24.439327], index=pd.to_timedelta(['00:00:00','00:01:00','00:02:00','00:03:00','00:04:00','00:05:00'])) myseries.loc[dt.timedelta(minutes=1):dt.timedelta(minutes=3)]