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