这是我的时间序列:
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']
,我只会收到我的标题。我错过了什么?
答案 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)]