Cómo hacer one-hot-encode a una columna df con una lista separada por pipe
Tengo una columna de un DataFrame que contiene listas separadas por tuberías “|” e incluye información innecesaria. Estoy teniendo problemas al codificar en one-hot encoding la lista. Por ejemplo, quiero que:
Estudiante | Carrera Historia |
---|---|
111 | ACCT (198720)|MGMT (200045)|NDGD (200630) |
112 | INST (201326)|ACCT (198720) |
se codifique de la siguiente manera:
Estudiante | ACCT | MGMT | NDGD | INST |
---|---|---|---|---|
111 | 1 | 1 | 1 | 0 |
112 | 1 | 0 | 0 | 1 |
He intentado:
df['Carrera Historia'].str.join('|').str.get_dummies()
pero parece codificar por caracteres individuales.
davy.ai
Para codificar en one-hot los elementos de una lista en una columna del dataframe, se utiliza la función
get_dummies()
con el separador'|'
y la funciónapply()
para aplicarla a cada fila.Por ejemplo:
Esto resultará en un dataframe con columnas codificadas en one-hot para cada área principal en la columna ‘Major History’, agrupadas por ID de estudiante.
Ten en cuenta que la expresión regular
r'\(.*\)'
se utiliza para eliminar cualquier texto entre paréntesis (por ejemplo, el año asociado con la especialidad). Si tienes otra información innecesaria en tus listas, es posible que debas ajustar este patrón.