python - index - pandas get_dummies
pandas python/numpy asignaciĆ³n de verdadero/falso a 1/0 (4)
Simplemente multiplique su Dataframe por 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
Tengo una columna en Python panda DataFrame que tiene valores booleanos True / False, pero para más cálculos necesito una representación de 1/0. ¿Hay una forma rápida de pandas / numpy para hacer eso?
EDITAR: Las respuestas a continuación no parecen sostenerse en el caso de Numpy que, dado un conjunto con valores enteros y True / False, devuelve dtype=object
en dicho conjunto. Para continuar con los cálculos en numpy, tuve que establecer explícitamente np_values = np.array(df.values, dtype = np.float64)
.
Solo para responder muy explícitamente a la pregunta de cómo convertir una sola columna de valores booleanos en una columna de números enteros 1 o 0:
df.somecolumn = df.somecolumn.astype(int)
También puedes hacerlo directamente en marcos
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
True
es 1
en Python, y asimismo False
es 0
* :
>>> True == 1
True
>>> False == 0
True
Debería poder realizar cualquier operación que desee con solo tratarlos como si fueran números, ya que son números:
>>> issubclass(bool, int)
True
>>> True * 5
5
Entonces, para responder a su pregunta, no es necesario trabajar; ya tiene lo que está buscando.
* Nota que uso es como una palabra en inglés, no la palabra clave Python is
- True
no será el mismo objeto que cualquier random 1
.