2017-10-30 8 views
0

これは私の時系列である:時間スタンプ付きのパンダシリーズをインデックスとしてスライスするにはどうすればいいですか?

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']、私は私のヘッダーを取得します。私は何が欠けていますか?

答えて

1

関数pd.to_datetime(Series)を使用する必要があります。コードは次のとおりです。

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

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

それは動作しません。 'TypeError:はdatetimeに変換できないと言いますが、実際にはTimeカラムは' object'です。 – FaCoffee

1

あなたのケースでは、あなたは全く変換する必要はありません。 あなたがデータフレームのシリーズを回して、次の操作を行います。

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

が続い

df.loc['00:00:00':'00:05:00'] 
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)]

関連する問題