pandasの.queryによりDataFrameから条件に適合する項目を抽出したい。

実現したいこと

pandasの.queryによりDataFrameから条件に適合する項目を抽出したい。

前提

以下のような日経225先物日中足csvファイルがあり、16時30分以降翌朝6時のデータには日付に翌取引日がセットされています。
日付,時間,始値,高値,安値,終値,出来高
2012/1/4,9:00,8535,8570,8535,8560,58246
2012/1/4,9:30,8555,8570,8555,8565,28262
2012/1/4,10:00,8570,8575,8555,8555,20773
...
2013/1/4,2:00,10365,10385,10360,10380,5120
2013/1/4,2:30,10380,10380,10370,10375,826
2013/1/4,3:00,10370,10370,10370,10370,2611

利用にあたっては、先ず以下のような日付xRefファイルにより実際の日付に変換する必要があります。
翌取引日,取引日,取引日翌日
2010-01-05,2010-01-04,2010-01-05
2010-01-06,2010-01-05,2010-01-06
2010-01-07,2010-01-06,2010-01-07
...
2012-12-28,2012-12-27,2012-12-28
2013-01-04,2012-12-28,2012-12-29
2013-01-07,2013-01-04,2013-01-05
最終的には全件日付変換する必要があるのですが第一段階として最終行
2013/1/4,3:00,10370,10370,10370,10370,2611
の日付を2012-12-29に変換しようとしたのですがqueryでエラーとなってしまいます。

発生している問題・エラーメッセージ

queryでエラー発生。

エラーメッセージ
ValueError: Can only compare identically-labeled Series objects

該当のソースコード

python

1import pandas as pd 2 3df = pd.read_csv(r'日経225先物日中足.csv', sep=",", parse_dates=[0])4DT=df['日付'].tail(1)5 6df_date=pd.read_csv(r'日付xRef.csv', sep=",", parse_dates=[0,1,2])7df_date=df_date.query('翌取引日 == @DT')8print(df_date['取引日翌日'])

試したこと

csv読み込みの部分で

python

1parse_dates=[0]2parse_dates=[0,1,2]

を削除して試したが変化なし。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

コメントを投稿

0 コメント