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

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

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

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1343閲覧

Pandasのdfのインデックス用とデータ用をマージするとデータが反映されない

666_paru

総合スコア20

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/08/11 05:44

編集2020/08/11 11:21

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')

お分かりの方、よろしくお願いいたします。

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

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

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

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

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

can110

2020/08/11 05:54

start, end, instrumentsなど不明な変数がいくつもありコードが実行、検証、動作を理解できません。 第三者が実行、検証できる完全なコードを提示すると回答が得られやすくなります。
guest

回答1

0

ベストアンサー

インデックスが日付・時刻データ型であれば、.asfreq()が使えます。
pandas.DataFrame.asfreq — pandas documentation
pandasで時系列データをリサンプリングするresample, asfreq | note.nkmk.me

In [10]: base_df Out[10]: volume open high low close time 2020-08-04 00:00:05+00:00 3 106.034 106.034 106.031 106.031 2020-08-04 00:00:10+00:00 10 106.029 106.029 106.019 106.024 2020-08-04 00:00:15+00:00 1 106.026 106.026 106.026 106.026 2020-08-04 00:00:25+00:00 2 106.028 106.028 106.026 106.026 2020-08-04 00:00:30+00:00 4 106.024 106.027 106.024 106.026 In [11]: base_df.asfreq('5s') Out[11]: volume open high low close time 2020-08-04 00:00:05+00:00 3.0 106.034 106.034 106.031 106.031 2020-08-04 00:00:10+00:00 10.0 106.029 106.029 106.019 106.024 2020-08-04 00:00:15+00:00 1.0 106.026 106.026 106.026 106.026 2020-08-04 00:00:20+00:00 NaN NaN NaN NaN NaN 2020-08-04 00:00:25+00:00 2.0 106.028 106.028 106.026 106.026 2020-08-04 00:00:30+00:00 4.0 106.024 106.027 106.024 106.026

投稿2020/08/12 01:58

kirara0048

総合スコア1399

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

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

666_paru

2020/08/12 03:42

こんな簡単にできるんですね。 力技でのコード作っていました。 教えて頂きありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問