IF 语句应用不同的公式



我希望创建一个字段,告诉我球员通过在 FPL 中得分或助攻进球获得多少分。由于每个进球的得分因位置(GK、后卫、中场、前锋(而异,但助攻的得分相同(3(,我需要代码来识别球员的位置,并根据他在每个位置获得的分数将其相乘。

代码如下:

multi_goal = if df['element_type'] == 'FWD': 4
elif df['element_type'] == 'MID': 5
elif df['element_type'] == 'DEF': 6
else df['element_type'] == 'GK': 6
goals_int = df['goal_part'] = (df['goals_scored']*multigoal) + (df['assists']*3)

"多目标"对象给出此错误:

multi_goal = if df['element_type'] == 'FWD': 4
^
SyntaxError: invalid syntax

您可以使用更简单的合成器,例如:

if df['element_type'] == 'FWD':
multi_goal = 4
elif df['element_type'] == 'MID':
multi_goal = 5
...

或者,您可以实现一个 switch 语句,https://jaxenter.com/implement-switch-case-statement-python-138315.html

希望对;)有所帮助

IIUC,我会使用字典和map

dmap = {'FWD': 4,
'MID':5,
'DEF':6,
'GK':6}
df = pd.DataFrame({'Position':['FWD','FWD','MID','DEF','GK'],
'goals_scored':[1,2,1,3,0],
'assists':[0,3,1,1,2]})
df['goal_part'] = df['goals_scored']*df['Position'].map(dmap) + df['assists']*3

输出:

Position  goals_scored  assists  goal_part
0      FWD             1        0          4
1      FWD             2        3         17
2      MID             1        1          8
3      DEF             3        1         21
4       GK             0        2          6

最新更新