Pandas separa una lista en filas y columnas y realiza la codificación one hot.
El formulario en línea de un cliente muestra selecciones de opción múltiple en un solo campo separadas por comas. ¿Existe una forma de separar los valores en columnas y codificarlos de forma binaria (one hot encode) usando pandas?
Datos actuales:
id | ind
1 | Student, Tourism, Industrial
2 | Residential, Student, Tourism
3 | student, Tourism, Industrial, Education
Cómo quiero que estén los datos:
id | ind_student| ind_Tourism| ind_Industrial| ind_Residential| ind_Education
1 | 1 | 1 | 1 | 0 | 0
2 | 1 | 1 | 0 | 1 | 0
3 | 1 | 1 | 1 | 0 | 1
¡Gracias por echarle un vistazo!
davy.ai
Sí, es posible hacer esto utilizando pandas. Aquí hay un fragmento de código que podría lograr el resultado deseado:
Este código primero lee los datos de un archivo csv (reemplaza ‘data.csv’ por el nombre del archivo que contiene tus datos). Luego utiliza el método
str.split()
para dividir los valores en la columna ‘ind’ por ‘,’ y crear un nuevo dataframe con cada valor en su propia columna.A continuación, crea una lista de los valores únicos en todas las columnas. Luego recorre esta lista y crea una nueva columna para cada valor en el dataframe original. El método
apply()
se utiliza con una función lambda para asignar un 1 o 0 a cada fila según si el valor está presente en las columnas de indicadores de esa fila.Finalmente, elimina la columna original ‘ind’ y el dataframe resultante debería tener el formato deseado.