前提・実現したいこと
pandasにて片方のデータフレームを参照し、複数の条件に合うデータをもう片方のデータフレームに挿入するという作業をしたいです。
扱っているのは競馬場のデータです。※なお、実名馬等使用していますが、以下は全くの適当なデータです。
データフレームと完成系
df1
|馬名 |場所|芝・ダ|距離|父馬名 |脚質
|トウカイテイオー |東京|芝 |1600|シンボリルドルフ|先行
|ソダシ |東京|芝 |2000|クロフネ |逃げ
|テイエムオペラオー|中山|芝 |2000|オペラハウス |差し
df2
|場所|芝・ダ|距離|基準タイム |
|東京|芝 |1600|85.0 |
|東京|芝 |2000|80.0 |
|中山|芝 |2000|120.0 |
|中山|芝 |2500|150.0 |
|中山|ダ |1200|63.0 |
|新潟|ダ |1800|78.0 |
|札幌|芝 |2000|123.0 |
|札幌|ダ |2300|130.0 |
|函館|芝 |3200|200.0 |
↓↓↓↓↓ 処理 ↓↓↓↓↓
df1
|馬名 |場所|芝・ダ|距離|父馬名 |脚質|基準タイム |
|トウカイテイオー |東京|芝 |1600|シンボリルドルフ|先行|85.0 |
|ソダシ |東京|芝 |2000|クロフネ |逃げ|80.0 |
|テイエムオペラオー|中山|芝 |2000|オペラハウス |差し|120.0 |
df1に該当するデータは164万×30と結構大きめのデータなので素早く処理できる方法であると助かります。
mergeやiterrowsなどいろいろ試してみましたが力不足で実現できませんでした。
ご教授宜しくお願いします。
###コード補足
import pandas as pd
df1 = pd.merge(df1, df2, on=['場所', '芝・ダ', '距離'], how='outer', sort=False)
df1['基準タイム(秒)'] = df2['基準タイム(秒)_y']
print(df1)
|馬名 |場所|芝・ダ|距離|父馬名 |脚質|基準タイム |
|トウカイテイオー |東京|芝 |1600|シンボリルドルフ|先行|63.0 |
|ソダシ |東京|芝 |2000|クロフネ |逃げ|63.0 |
|テイエムオペラオー|中山|芝 |2000|オペラハウス |差し|200.0 |
このように想定したデータと違うデータが入ってしまいます。