oanda APIからバックテスト用に取得した5秒足のデータの欠損を埋める方法がうまくいかず、助けて頂きたいです。
取得してきたデータは以下のpandasのDataFrameの状態です。
(欠損がないので、に8/4の0時20秒のデータを削除しています。)
python
1base_df 2 volume open high low close 3time 42020-08-04T00:00:05.000000000Z 3 106.034 106.034 106.031 106.031 52020-08-04T00:00:10.000000000Z 10 106.029 106.029 106.019 106.024 62020-08-04T00:00:15.000000000Z 1 106.026 106.026 106.026 106.026 72020-08-04T00:00:25.000000000Z 2 106.028 106.028 106.026 106.026 82020-08-04T00:00:30.000000000Z 4 106.024 106.027 106.024 106.026
この時、timeのインデックスは5秒毎に存在し、データはNANになるようにしたいです。
python
1 volume open high low close 2time 32020-08-04T00:00:05.000000000Z 3 106.034 106.034 106.031 106.031 42020-08-04T00:00:10.000000000Z 10 106.029 106.029 106.019 106.024 52020-08-04T00:00:15.000000000Z 1 106.026 106.026 106.026 106.026 62020-08-04T00:00:20.000000000Z NAN NAN NAN NAN NAN 72020-08-04T00:00:25.000000000Z 2 106.028 106.028 106.026 106.026 82020-08-04T00:00:30.000000000Z 4 106.024 106.027 106.024 106.026
時間のインデックスがそろっているnew_dfを作成し、こちらの対応する時間のカラムに上書きを考えましたが、どうしたらよいでしょうか?
python
1 2 new_df = pd.DataFrame(columns=["volume", "open", "high", "low", "close"]) 3 new_df['time'] = pd.date_range(start=day, end=day + datetime.timedelta(hours=23, minutes=59, seconds=55), freq="5S").strftime(fmt) 4 5 6 volume open high low close 7time 82020-08-04T00:00:05.000000000Z NaN NaN NaN NaN NaN 92020-08-04T00:00:10.000000000Z NaN NaN NaN NaN NaN 102020-08-04T00:00:15.000000000Z NaN NaN NaN NaN NaN 112020-08-04T00:00:20.000000000Z NaN NaN NaN NaN NaN 122020-08-04T00:00:25.000000000Z NaN NaN NaN NaN NaN
以下のコードを試しましたがうまくいかなかったです
python
1 df_merge = pd.merge(base_df, new_df, on='time', how='right') 2 df_merge = new_df.join(base_df, how='outer')
お分かりの方、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー