[英]How to slice pandas series with hour stamps as index?
这是我的时间序列:
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']
,则只会得到标题。 我想念什么?
您需要使用函数pd.to_datetime(Series)。 这是代码:
df.Time = pd.to_datetime(df.Time)
df.dtypes
Time datetime64[ns]
Vals float64
dtype: object
可能是您的情况,您根本不需要转换。 将系列转为数据框时,请执行以下操作:
df = pd.DataFrame(myseries, columns=['Vals'])
然后尝试
df.loc['00:00:00':'00:05:00']
这是我的尝试:
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)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.