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)

Nom : données.png
Affichages : 212
Taille : 140,7 Ko

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']]
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)
Merci d'avance pour votre aide !!!