tutorial index get_dummies data columns column cleaning python numpy pandas

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 .