日付が異なる複数の株価データがあるとします。すべての株式にわたって、合計100の日付があります。それぞれの日付が100未満の10の株式がある場合、各株式の日付が合計100で、データフレームの日付が10 * 100行= 1000行である最終的なデータフレームを取得したいと思います。持っていない、それはNaNの行でなければなりません。
df1
date ticker open high low close volume
0 2007-01-03 0001 0.133293 0.133293 0.133293 0.133293 40.0
1 2007-01-04 0001 0.133293 0.133293 0.133293 0.133293 0.0
2 2007-01-05 0001 0.133293 0.133293 0.128697 0.133293 215.0
df2
date ticker open high low close volume
0 2007-01-01 0002 0.111111 0.111111 0.111111 0.111111 11.1
1 2007-01-02 0002 0.111111 0.111111 0.111111 0.111111 11.1
2 2007-01-04 0002 0.111111 0.111111 0.111111 0.111111 11.1
結果としてdf
df1
date ticker open high low close volume
0 2007-01-01 0001 NaN NaN NaN NaN NaN
1 2007-01-02 0001 NaN NaN NaN NaN NaN
2 2007-01-03 0001 0.133293 0.133293 0.133293 0.133293 40.0
3 2007-01-04 0001 0.133293 0.133293 0.133293 0.133293 0.0
4 2007-01-05 0001 0.133293 0.133293 0.128697 0.133293 215.0
5 2007-01-01 0002 0.111111 0.111111 0.111111 0.111111 11.1
6 2007-01-02 0002 0.111111 0.111111 0.111111 0.111111 11.1
7 2007-01-03 0002 NaN NaN NaN NaN NaN
8 2007-01-04 0002 0.111111 0.111111 0.111111 0.111111 11.1
9 2007-01-05 0002 NaN NaN NaN NaN NaN
あなたの最初のconcat
あなたのデータフレームは、set_index
日付やティッカー、reindex
とのMultiIndex.from_product
とのunique
両方の列からの値とreset_index
df_f = pd.concat([df1,df2], axis=0)
df_f = df_f.set_index(['date','ticker'])\
.reindex(pd.MultiIndex.from_product([df_f['date'].unique(), df_f['ticker'].unique()],
names=['date','ticker']))\
.reset_index()#.sort_values(['ticker', 'date'])
print (df_f)
date ticker open high low close volume
0 2007-01-03 1 0.133293 0.133293 0.133293 0.133293 40.0
1 2007-01-03 2 NaN NaN NaN NaN NaN
2 2007-01-04 1 0.133293 0.133293 0.133293 0.133293 0.0
3 2007-01-04 2 0.111111 0.111111 0.111111 0.111111 11.1
4 2007-01-05 1 0.133293 0.133293 0.128697 0.133293 215.0
5 2007-01-05 2 NaN NaN NaN NaN NaN
6 2007-01-01 1 NaN NaN NaN NaN NaN
7 2007-01-01 2 0.111111 0.111111 0.111111 0.111111 11.1
8 2007-01-02 1 NaN NaN NaN NaN NaN
9 2007-01-02 2 0.111111 0.111111 0.111111 0.111111 11.1
sort_values
結果をどのようにソートするかに応じて、後で行うことができます
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加