Comment résoudre les problèmes suivants en appliquant des dictionnaires en Python L'idée est de supprimer le si et de le remplacer par un dictionnaire et d'obtenir le même résultat.
def apply_fun(row,col='a'):
if row[col] <= 5:
val = 5
elif row[col] <= 10:
val = 10
elif row[col] <= 15:
val = 15
elif row[col] <= 20:
val = 20
elif row[col] <= 25:
val = 25
else:
val = 30
return val
values = [[12,2],[3,2],[23,2],[7,2],[19,2]]
db = pd.DataFrame(values, columns = ['a','b'])
db['new'] = db.apply(apply_fun, axis=1)
a b new
0 12 2 15
1 3 2 5
2 23 2 25
3 7 2 10
4 19 2 20
3 réponses
Lorsque vous arrondissez au multiple de 5 le plus proche, utilisez:
import numpy as np
db["new"] = np.ceil(db["a"] / 5).astype(int) * 5
print(db)
Cela imprime:
a b new
0 12 2 15
1 3 2 5
2 23 2 25
3 7 2 10
4 19 2 20
Vous arrondissez simplement les nombres aux 5 secondes les plus proches. Vous pouvez le faire à la place:
db['new'] = db['a'].add(4).floordiv(5).mul(5)
a b new
0 12 2 15
1 3 2 5
2 23 2 25
3 7 2 10
4 19 2 20
Si toutefois vous parlez de vérifier un dictionnaire pour la plage, ce n'est pas faisable, car les dictionnaires sont mappés un à un. À moins que vous ne vouliez commencer à identifier {1: 5, 2: 5, 3: 5, ...}
.
Je ne ferais pas ça avec un dictionnaire. Lorsque la commande est importante, utilisez une liste.
def apply_fun(row,col='a'):
limits = [5, 12, 15, 18, 25, 30]
for i in limits:
if row[col] <= i:
return i
return limits[-1] # default to the last item
Notez que cela ne doit être utilisé que s'il n'y a pas de solution mathématique simple comme dans les autres réponses.
Questions connexes
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.