Bonjour,
Je me prends la tête depuis hier et je ne trouve pas de solution satisfaisante.
J'ai récupéré des données de tirs en biathlon qui sont sous ce format:
Pour l'exercice à deux tirs : 2+3
Pour l'exercice à quatre tirs : 0+3+1+2
Je souhaite déterminer le pourcentage de réussite de chaque athlète (pour un exercice à deux tirs 100% de réussite c'est 0+0)
j'ai tenté de faire une boucle... mais c'est hyper long et ça ne fonctionne pas la colonne statistique de tir est vide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 for index, row in data_all.iterrows(): #exercice à deux tirs try: if len(row.Shootings)==3 | len(row.Shootings)==4: tirs_rat= eval(row.Shootings) if tirs_rat <=10: row.Shootings_stats = ((-10*tirs_rat) +100) elif len(row.Shootings)==7: tirs_rat=eval(row.Shootings) if tirs_rat <=20: row.Shootings_stats = ((-5*tirs_rat) +100) print(row.Shootings_stats) except (RuntimeError, TypeError, NameError): Shootings_stats_calc.append('NA') pass print(data_all.Shootings_stats)
J'ai aussi tenté ce genre de chose mais cela ne fonctionne pas non plus:
Code : Sélectionner tout - Visualiser dans une fenêtre à part data_all['Shootings_stats']=[(-(eval(str(x))*10 +100)) if len(str(x))==3 | len(str(x))==4 else (-(eval(str(x))*20 +100)) for x in data_all['Shootings']]Merci d'avance pour votre aide !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 values_twoshoot = (-(eval(data_all.Shootings.str)*10 +100)) data_all['Shootings_stats']= values_twoshoot.where(data_all.testlong ==3 | data_all.testlong==4)
Partager