質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1960閲覧

pandas DateTimeIndex型の時刻のみ指定したデータ抽出について

NoPython_Nolife

総合スコア49

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

4クリップ

投稿2017/08/30 15:09

編集2017/08/30 18:07

下記のようなpandasのDateTimeIndex型のインデックスとなっているデータ:dataで、時刻のみ指定してデータを抽出方法があれば、ご教授頂きたいです。
説明不足でしたので、追記します。

data

datetime open hi low close
2017-08-25 00:15:00 129.521 129.538 129.496 129.513
2017-08-25 00:30:00 129.521 129.538 129.496 129.513
2017-08-25 00:45:00 129.521 129.538 129.496 129.513
2017-08-26 00:15:00 129.521 129.80 129.65 129.200
2017-08-26 00:30:00 129.521 129.538 129.496 129.513
2017-08-26 00:45:00 129.521 129.538 129.496 129.513

上記のような時系列データから例えば違う日付でも「00:15:00」の時間の
データのみ抽出したいです。

2017-08-25 00:15:00 129.521 129.538 129.496 129.513
2017-08-26 00:15:00 129.521 129.538 129.496 129.513

data[data.index == '00:15:00']としてもデータがヒットしません。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

このようにtime型で指定すれば指定した時刻のデータのみ抽出できます。

python

1from datetime import time 2 3data.loc[time(9, 0)]

投稿2017/08/30 23:16

driller

総合スコア720

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NoPython_Nolife

2017/08/31 03:01

コメントありがとうございます。これに&や|などの条件抽出は可能でしょうか?たとえば、上記例だと9時以降から18時までの間のデータはすべて抽出するなどです。 宜しくお願い致します。
NoPython_Nolife

2017/08/31 03:08

data.loc[time(9, 0):time(18,0)]の記述で解決しました。 大変ご丁寧なご説明で大変助かりました。ありがとうございました。
driller

2017/08/31 06:46

between_timeというメソッドもありますので、ご参考に。 data.between_time(time(9, 0), time(18, 0))
guest

0

DataFrame.index.timedatetime.time()の比較にてFilterをかけるとよいのではないでしょうか

Python

1import pandas as pd 2import numpy as np 3import datetime as dt 4 5# 15分間隔で3日分のデータを生成 6dates = pd.date_range('2017/09/01', periods=288, freq='15min') 7df = pd.DataFrame({'VALUE': np.random.randint(0,10,288)}, index=dates) 8 9# 1:15 のデータを取得 10print(df[df.index.time == dt.time(1,15)])

投稿2017/08/30 16:22

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NoPython_Nolife

2017/08/30 18:11

コメントありがとうございます。質問内容に足らない部分があったので追記いたしました。この内容でも回答いただきました方法で解決しますでしょうか?
magichan

2017/08/30 23:27

問題ありません。 df.index.date として、時刻(日付に関係なく)と比較を行っておりますので、全ての日付の同時刻のデータが得られると思います。
NoPython_Nolife

2017/08/31 02:58

ご丁寧なご案内ありがとうございます。参考いさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問