la manipulation des zéros dans les pandas DataFrames divisions de colonnes en Python
Quelle est la meilleure façon de gérer de zéro dénominateurs lors de la division des pandas DataFrame les colonnes de l'un par l'autre en Python? par exemple:
df = pandas.DataFrame({"a": [1, 2, 0, 1, 5], "b": [0, 10, 20, 30, 50]})
df.a / df.b # yields error
J'aimerais les ratios d'où le dénominateur est égal à zéro pour être enregistrés en tant que NA (numpy.nan
). Comment cela peut-il être fait de manière efficace dans les pandas?
Casting pour float64
ne fonctionne pas au niveau des colonnes:
In [29]: df
Out[29]:
a b
0 1 0
1 2 10
2 0 20
3 1 30
4 5 50
In [30]: df["a"].astype("float64") / df["b"].astype("float64")
...
FloatingPointError: divide by zero encountered in divide
Comment puis-je faire, juste pour le particulier colonnes et non pas toute la df?
- Si vous venez d'utiliser des flotteurs, vous aurez +/-
inf
- il ne fonctionne pas pour moi - voir modifier
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour travailler dans les flotteurs, sinon vous aurez division entière, pas de prob de ce que vous voulez
Voici une façon
Voici une autre façon
np.seterr()
n'importe où dans votre code?pd.DataFrame.div
?0/0
(et de le transformer en unnan
, en tant que par défaut il serainf
)