tutorial tablas tabla recorrer para notebook leer hacer funciones español documentacion datos data crear con como python pandas dataframe series

tablas - pandas python tutorial español pdf



¿Hay una forma sencilla de cambiar una columna de sí/no a 1/0 en un marco de datos de Pandas? (8)

Intenta lo siguiente:

sampleDF[''housing''] = sampleDF[''housing''].str.lower().replace({''yes'': 1, ''no'': 0})

Leí un archivo csv en un marco de datos de pandas y me gustaría convertir las columnas con respuestas binarias de cadenas de sí / no a enteros de 1/0. A continuación, muestro una de esas columnas ("sampleDF" es el marco de datos de pandas).

In [13]: sampleDF.housing[0:10] Out[13]: 0 no 1 no 2 yes 3 no 4 no 5 no 6 no 7 no 8 yes 9 yes Name: housing, dtype: object

La ayuda es muy apreciada!


La forma más fácil de hacerlo es usar pandas como se muestra a continuación:

housing = pd.get_dummies(sampleDF[''housing''],drop_first=True)

despues de esa gota esta archivada desde df principal

sampleDF.drop(''housing'',axis=1,inplace=True)

ahora fusiona uno nuevo en ti df

sampleDF= pd.concat([sampleDF,housing ],axis=1)



Prueba esto:

sampleDF[''housing''] = sampleDF[''housing''].map({''yes'': 1, ''no'': 0})


Puedes convertir una serie de Boolean a entero explícitamente:

sampleDF[''housing''] = sampleDF[''housing''].eq(''yes'').astype(int)


Método 1

sample.housing.eq(''yes'').mul(1)

método 2

pd.Series(np.where(sample.housing.values == ''yes'', 1, 0), sample.index)

método 3

sample.housing.map(dict(yes=1, no=0))

método 4

pd.Series(map(lambda x: dict(yes=1, no=0)[x], sample.housing.values.tolist()), sample.index)

método 5

pd.Series(np.searchsorted([''no'', ''yes''], sample.housing.values), sample.index)

Todo el rendimiento

0 0 1 0 2 1 3 0 4 0 5 0 6 0 7 0 8 1 9 1

sincronización
muestra dada

sincronización
muestra larga
sample = pd.DataFrame(dict(housing=np.random.choice((''yes'', ''no''), size=100000)))


# produces True/False sampleDF[''housing''] = sampleDF[''housing''] == ''yes''

Lo anterior devuelve valores de Verdadero / Falso que son esencialmente 1/0, respectivamente. Los booleanos admiten funciones de suma, etc. Si realmente necesita valores de 1/0, puede usar lo siguiente.

housing_map = {''yes'': 1, ''no'': 0} sampleDF[''housing''] = sampleDF[''housing''].map(housing_map)


%timeit sampleDF[''housing''] = sampleDF[''housing''].apply(lambda x: 0 if x==''no'' else 1)

1.84 ms ± 56.2 µs por bucle (media ± desviación estándar de 7 ejecuciones, 1000 bucles cada una)

Reemplaza ''sí'' con 1, ''no'' con 0 para la columna df especificada.