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)
Manera genérica:
import pandas as pd
string_data = string_data.astype(''category'')
numbers_data = string_data.cat.codes
referencia: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.astype.html
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.