pandasで特定の時間のデータのみ取得する

pandasでcsvなどを扱う際,csvに含まれるtimestampから,特定の時間のデータのみ取得したいことがよくある(多分)

text,timestamp
hogehoge,2020-05-01 12:32:14
huga,2020-04-23 21:32:23
hoge,2020-05-23 14:10:23
foo,2020-04-21 12:32:25

こんなデータから,全ての日付の12時台のデータのみ取得したい!という感じのものだ.

早速方法.

>> import pandas as pd
>> data = pd.read_csv('./sample.csv')
>> data
       text            timestamp
0  hogehoge  2020-05-01 12:32:14
1      huga  2020-04-23 21:32:23
2      hoge  2020-05-23 14:10:23
3       foo  2020-04-21 12:32:25

# この段階ではtimestampはdate型ではない
>> data.types
text         object
timestamp    object
dtype: object

# timestampをdatetime型に変更する
>> data['timestamp'] = pd.to_datetime(data['timestamp'])
>> data.dtypes
text                 object
timestamp    datetime64[ns]
dtype: object

# 12時台のデータのみ取得する
>> data[data['timestamp'].dt.hour == 12]
       text           timestamp
0  hogehoge 2020-05-01 12:32:14
3       foo 2020-04-21 12:32:25

同じように書けば,同じ日付のデータのみ取得する.といったことも可能になる.