假设我有以下pandas dataframe:
| 主队|客场球队|主队主场胜|客场球队客场获胜|
| - ------|- ------|- ------|- ------|
| 酒吧|MNU|四个|三个|
| 风险管理|酒吧|六个|五个|
| MNU|瑞士|第二章|三个|
| 瑞士|风险管理|四个|四个|
我想添加另一个名为Home Team Total Wins的列,其预期结果如下:
| 主队|客场球队|主队总胜数|
| - ------|- ------|- ------|
| 酒吧|MNU|四个|
| 风险管理|酒吧|六个|
| MNU|瑞士|五个|
| 瑞士|风险管理|七|
逻辑是,在每一行,通过数据框向后搜索最后一行,其中客场队等于当前行的主队。然后,从该行中获取客场队客场胜利并将其添加到当前行的主队主场胜利。例如,在第三行中,我们找到最后一行,其中客场队== 'MNU',获取其客场队客场胜利值,并将其添加到Home Team Home Wins值以创建新列(因此我们获得2+3 = 5)。
我尝试过使用df.apply来实现这一点,但到目前为止还没有成功。有没有办法在pandas中实现这一点,或者我需要回到绘图板并使用不同的数据结构?
1条答案
按热度按时间dba5bblo1#
我想出了一个使用mask和
for
循环的解决方案。这似乎是预期的工作,但好吧,没有for
循环的解决方案会更好!输出: