J'ai une colonne en python pandas
DataFrame qui a des booléens True
/ False
mais pour d'autres calculs, j'ai besoin de 1
/ 0
représentation. Y a-t-il un moyen rapide pandas
/ numpy
manière de le faire ?
Réponses
Trop de publicités?True
es 1
en Python, et de même False
es 0
* :
>>> True == 1
True
>>> False == 0
True
Vous devriez être en mesure d'effectuer toutes les opérations que vous voulez sur eux en les traitant simplement comme s'ils étaient des nombres, puisqu'ils sont numéros :
>>> issubclass(bool, int)
True
>>> True * 5
5
Donc, pour répondre à votre question, aucun travail n'est nécessaire - vous avez déjà ce que vous recherchez.
* Notez que j'utilise es comme un mot anglais, et non le mot-clé Python is
- True
ne sera pas le même objet qu'un autre aléatoire 1
.
Cette question mentionne spécifiquement une seule colonne, donc la réponse actuellement acceptée fonctionne. Cependant, elle ne s'applique pas à plusieurs colonnes. Pour ceux qui souhaitent une solution générale, utilisez ce qui suit :
df.replace({False: 0, True: 1}, inplace=True)
Cela fonctionne pour un DataFrame qui contient des colonnes de nombreux types différents, indépendamment du nombre de booléens.
Vous pouvez également le faire directement sur les cadres
In [104]: df = DataFrame(dict(A = True, B = False),index=range(3))
In [105]: df
Out[105]:
A B
0 True False
1 True False
2 True False
In [106]: df.dtypes
Out[106]:
A bool
B bool
dtype: object
In [107]: df.astype(int)
Out[107]:
A B
0 1 0
1 1 0
2 1 0
In [108]: df.astype(int).dtypes
Out[108]:
A int64
B int64
dtype: object
- Réponses précédentes
- Plus de réponses