it-swarm.com.de

Wie kann ich 1/0 in einem Pandas DataFrame True / False zuordnen?

Ich habe eine Spalte in python pandas DataFrame mit booleschen True/False-Werten, aber für weitere Berechnungen benötige ich eine 1/0-Darstellung. Gibt es schnelle Pandas? Wie mache ich das?

BEARBEITEN: Die folgenden Antworten scheinen nicht zu gelten, wenn für ein Array mit Ganzzahlen und Richtig/Falsch-Werten dtype=object Für ein solches Array angegeben wird. Um weitere Berechnungen in numpy durchführen zu können, musste ich np_values = np.array(df.values, dtype = np.float64) explizit setzen.

87
Simon Righley

True ist 1 in Python, und ebenfalls False ist 0*:

>>> True == 1
True
>>> False == 0
True

Sie sollten in der Lage sein, alle gewünschten Operationen durchzuführen, indem Sie sie einfach so behandeln, als wären sie Zahlen, wie sie sind Zahlen:

>>> issubclass(bool, int)
True
>>> True * 5
5

Um Ihre Frage zu beantworten, ist keine Arbeit erforderlich - Sie haben bereits das, wonach Sie suchen.

* Hinweis Ich verwende is als englisches Wort, nicht das Python Schlüsselwort is - True wird nicht dasselbe Objekt sein wie irgendein zufälliges 1.

43
Gareth Latty

Nur um die Frage, wie eine einzelne Spalte mit Booleschen Werten in eine Spalte mit Ganzzahlen 1 oder 0 konvertiert werden kann, sehr explizit zu beantworten:

df.somecolumn = df.somecolumn.astype(int)

187
User

Multiplizieren Sie einfach Ihren Datenrahmen mit 1 (int)

[1]: data = pd.DataFrame([[True, False, True], [False, False, True]])
[2]: print data
          0      1     2
     0   True  False  True
     1   False False  True

[3]: print data*1
         0  1  2
     0   1  0  1
     1   0  0  1
54
shubhamgoel27

Sie können dies auch direkt auf Frames tun

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
21
Jeff