前提
簡潔に述べると、2つのdataframeを条件付きで結合させたいです。
実現したいこと
少し複雑な条件ではありますが、処理速度を早くするためにより容易な方法を教えていただきたいです。
発生している問題・エラーメッセージ
まず、2つのdataframeは以下(例)のようになっています。
●1つ目
Year Pitcher_Name Speed B_type Team
2021 A 100 FF NYY
2021 A 101 NC NYY
2021 A 90 FS NYY
・
・
・
2022 Z 89 FF SEA
2022 Z 99 FF SEA
●2つ目
Year Pitcher_Name inning H
2018 A 89 67
2019 A 99 72
2020 A 59 55
2021 A 88 78
2018 B 77 88
・
・
・
2020 Z 66 68
2021 Z 78 99
2022 Z 88 101
●これら2つをまとめて以下のようにしたいです。
Year Pitcher_Name Team Speed B_type inning H
2021 A NYY 100 FF 89 67
2021 A NYY 101 NC 89 67
2021 A NYY 90 FS 89 67
・
・
・
2022 Z SEA 89 FF 88 101
2022 Z SEA 99 FF 77 88
1球ごとのデータに対して、その投手の年間ごとの成績を結合させたいのですが、力ずくでしかできません。もう少し、早く簡単に処理できる方法があれば教えていただきたいです。
該当のソースコード
Python
1#dfは1つ目のように、1球ごとのデータです 2#statsは2つ目のように年間の成績が入っていいます。 3 4for i in range(len(stats)): 5 for k in range(len(df)): 6 if stats.loc[i, "Year"] == df.loc[k, "Year"] and stats.loc[i, "Pitcher_Name"] == df.loc[k, "Pitcher_Name"] 7 df.loc[k, "inning"] = stats.loc[i, "inning"] 8 df.loc[k, "H"] = stats.loc[i, "H"] 9
試したこと
mergeを使って、複数条件でも試したのですが、付け加えたカラムが階段状に表示され、カラムの数も莫大に増えてしまいました。
そして、年間の成績の方を辞書型にして参照する方法も試しましたが、年間成績がない投手になるとエラーを吐くようになり、エラーを無視しようとすると付け加えたデータが全てNanになってしまいます。

回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2022/12/01 19:05