J'ai une série de nombres positifs et négatifs et je veux augmenter la valeur absolue de chaque nombre de un, tout en les gardant positifs / négatifs. 0,2 -> 1,2 -0,3 -> -1,3 Comment puis-je faire cela?

3
Luca Reichelt 5 juin 2020 à 03:27

3 réponses

Meilleure réponse

Essayons sign de numpy

s=pd.Series([0.2,-0.3])
(s.abs()+1)*np.sign(s)
0    1.2
1   -1.3
dtype: float64

Ou np.select

np.select([s>0,s<0],[s+1,s-1],default=1)
array([ 1.2, -1.3])

Nous pouvons aussi faire np.where

np.where(s>=0,s+1,s-1)
2
YOBEN_S 5 juin 2020 à 00:30

La réponse de @YOBEN_S le couvre suffisamment dans l'espace pandas/numpy - si vous travaillez dans des listes et en dehors de Pandas / Numpy, le code ci-dessous peut suffire, car il utilise le math dans python:

from math import fabs, copysign

[(fabs(ent)+1)*copysign(1,ent) for ent in l]

[1.2, -1.3]
2
sammywemmy 5 juin 2020 à 00:39

Vous pouvez faire un np.where:

s += np.where(s>=0, 1, -1)
2
Quang Hoang 5 juin 2020 à 00:39