使用条件条件根据 Pandas 中两列的值创建一个新列

问题描述 投票:0回答:1

我有一个包含两个不同列的数据框,我需要用它们来计算分数:

id 位置 玩家 GW 副总裁 决赛 掉落 锦标赛积分
0 1 1 阿莱西奥·比安奇 2 7.0 5.0 NaN
1 2 2 吉安卢卡·比安科 2 7.0 0.0 NaN
2 3 2 萨拉·罗西 1 5.0 0.0 NaN
3 4 2 加布里埃尔威尔第 1 4.5 0.0 NaN
4 5 2 卢卡·贾利 1 3.0 0.0 NaN

锦标赛积分由 GW 和 VP 计算得出,公式为:

df['锦标赛积分'] = ((玩家数量 / 10) * (df["VP"] + 1)) + (df['GW'] * x)

其中 number_of_players 和 X 是之前计算的。

但是我需要另一个步骤:

  1. 将 50 添加到“最终”列中具有最高值的行(在本例中为 Alessio Bianchi)
  2. 如果两行的“Final”值相同且最高,则只有“Pos”最低的行必须获得 50 提升

有什么建议吗?预先感谢

我已经尝试过 .apply() 和 .map() 方法但没有成功

python pandas dataframe calculated-columns
1个回答
0
投票

假设Pos已经排序,你可以使用

idxmax
,这将选择具有最大值的第一行:

df['TournamentPoints'] = ((number_of_players / 10) * (df["VP"] + 1)) + (df['GW'] * x)

df.loc[df['Final'].idxmax(), 'TournamentPoints'] += 50

如果 Pos 未排序:

df.loc[df.sort_values(by='Pos')['Final'].idxmax(), 'TournamentPoints'] += 50
© www.soinside.com 2019 - 2024. All rights reserved.