我希望创建一个字段,告诉我球员通过在 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