繁体   English   中英

如何用时戳作为索引切片熊猫系列?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM