pandas で異なる行のデータを用いて新たな列を追加したい
やりたいこと
既に作成しているDataFrameに対して、新しく追加する列に、特定の条件のもと適した値を入れたいと思っています。
今回はゲームの大会のデータを持ってきているのですが、そのゲームの対戦方式として、
1セット目:2人vs2人のバトル(2本先取で勝ち)
2セット目:1人vs1人のバトル(2本先取で勝ち)
3セット目:1人vs1人のバトル(3名の勝ち残りで相手を全滅させたら勝利)
となっており、2セット先取で試合に勝利となっています。
既にはdfというデータフレームの中に列が[match(通算で何試合目か),set(何セット目か),game(セット内で何試合目か),gamewinner(その1試合での勝者),team1(チーム1の名前),team2(チーム2の名前)]という風に入っています。
↓現在のデータフレーム
print(df)
#match #set #game #gamewinner #team1 #team2
#1 1 1 1 1 A B
#2 1 1 2 1 A B
#3 1 2 1 2 A B
#4 1 2 2 1 A B
#5 1 2 3 2 A B
#6 1 3 1 1 A B
#7 1 3 2 2 A B
#8 1 3 3 1 A B
#9 1 3 4 1 A B
#10 2 1 1 2 C D
...続く
このようになっているデータフレームにsetwinner,matchwinnerという新たな列を追加し、そのセット全体/試合全体でどちらが勝利したのかを1つの行から分かるようにしたいと考えています。
↓やりたいイメージ
print(df)
#match #set #game #gamewinner #team1 #team2 #setwinner #matchwinner
#1 1 1 1 1 A B 1 1
#2 1 1 2 1 A B 1 1
#3 1 2 1 2 A B 2 1
#4 1 2 2 1 A B 2 1
#5 1 2 3 2 A B 2 1
#6 1 3 1 1 A B 1 1
#7 1 3 2 2 A B 1 1
#8 1 3 3 1 A B 1 1
#9 1 3 4 1 A B 1 1
#10 2 1 1 2 C D 2 1
わからないこと
前後の行の情報を用いないとできないため、どのようにしたらやりたいことが実装できるのかわからず、困っています。
試してみたこと
他行の情報を見なくてもだできる点に関してはこれで実装できたのですが、そのほかの場合が分かりませんでした。
♯1,2セット目において3ゲームまでもつれ込んだ場合、3ゲーム目の勝者がそのセットの勝者
df.loc[(df["game"]==3)&(df["set"]!=3),"setwinner"] = df["gamewinner"]
ご回答よろしくお願いします。
https://teratail.com/questions/192733 このサイトにも同様の質問をさせていただいたのですが回答がないため、こちらの掲示板ならわかる方もいるのではないかと思い投稿させていただきます。