web-dev-qa-db-ja.com

パンダ:2つの日付の間のDataFrame行の選択(Datetime Index)

Pandas DatetimeIndexと1つの列を含むDataFrameがありますMSE Lossインデックスの形式は次のとおりです。

DatetimeIndex(['2015-07-16 07:14:41', '2015-07-16 07:14:48',
           '2015-07-16 07:14:54', '2015-07-16 07:15:01',
           '2015-07-16 07:15:07', '2015-07-16 07:15:14',...]

それは数日を含みます。

実際の時間間隔を特に知らなくても、特定の日のすべての行(すべての時間)を選択したいと思います。例:Between 2015-07-16 07:00:00および2015-07-16 23:00:00

私はここに概説されたアプローチを試しました: ここ

だが df[date_from:date_to]

出力:

KeyError: Timestamp('2015-07-16 07:00:00')

したがって、正確なインデックスが必要です。さらに、datecolumnはありません。日付のあるインデックスのみ。

日付を入力するだけで丸一日を選択する最良の方法は何ですか2015-07-16そして、どうすれば特定の日の特定の時間範囲を選択できますか?

12
user3142067

オプション1

サンプルdf:

df
                      a
2015-07-16 07:14:41  12
2015-07-16 07:14:48  34
2015-07-16 07:14:54  65
2015-07-16 07:15:01  34
2015-07-16 07:15:07  23
2015-07-16 07:15:14   1

.locなしでこれを試しているようです(これがないと動作しません)。

df.loc['2015-07-16 07:00:00':'2015-07-16 23:00:00']
                      a
2015-07-16 07:14:41  12
2015-07-16 07:14:48  34
2015-07-16 07:14:54  65
2015-07-16 07:15:01  34
2015-07-16 07:15:07  23
2015-07-16 07:15:14   1

オプション2

インデックスにブールインデックスを使用できます。

df[(df.index.get_level_values(0) >= '2015-07-16 07:00:00') & (df.index.get_level_values(0) <= '2015-07-16 23:00:00')]
9
Andrew L

truncateを使用できます。

begin = pd.Timestamp('2015-07-16 07:00:00')
end = pd.Timestamp('2015-07-16 23:00:00')

df.truncate(before=begin, after=end)
5
JrtPec