Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

362
Visualizações
Crear una tabla de características en Python desde un df

Tengo el siguiente DF:

 id step1 step2 step3 step4 .... stepn-1, stepn, event 1 abc null null null 1 2 bdf null null null 0 3 adghlm 1

Donde la identificación es una sesión, los pasos representan una ruta determinada y el evento es si sucedió algo específico

Quiero crear una tienda de funciones en la que tomemos todos los pasos posibles (a, b, c, ... hasta llegar a un número arbitrario) y convertirlos en columnas. Luego, quiero que la columna x siga siendo la id y solo complete un 1 o cero si esa sesión alcanzó ese paso en la columna. El resultado es el siguiente:

 id abcdefg ... n event 1 1 1 1 0 0 0 0 0 1 2 0 1 0 0 0 1 0 0 0 3 1 0 0 1 0 0 1 1 1

Tengo una lista única de todos los pasos posibles que supongo que se usarán para construir la nueva tabla. Pero después de eso estoy luchando pensando en cómo crear esto.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Lo que está buscando se usa a menudo en el aprendizaje automático y se denomina codificación one-hot .

Hay una función de pandas diseñada específicamente para este propósito, llamada pd.get_dummies() .

 step_cols = [c for c in df.columns if c.startswith('step')] other_cols = [c for c in df.columns if not c.startswith('step')] new_df = pd.get_dummies(df[step_cols].stack()).groupby(level=0).max() new_df[other_cols] = df[other_cols]

Producción:

 >>> new_df abcdfghlm id event 0 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 0 0 0 2 0 2 1 0 0 1 0 1 1 1 1 3 1
over 4 years ago · Santiago Trujillo Relatório

0

Probablemente no sea la forma más elegante:

 step_cols = [col for col in df.columns if col.startswith("step")] values = pd.Series(sorted(set(df[step_cols].melt().value.dropna()))) df1 = pd.DataFrame( (values.isin(row).to_list() for row in zip(*(df[col] for col in step_cols))), columns=values ).astype(int) df = pd.concat([df.id, df1, df.event], axis=1)

Resultado para

 df = id step1 step2 step3 step4 event 0 1 abc NaN 1 1 2 bdf NaN 0 2 3 adgh 1

es

 id abcdfgh event 0 1 1 1 1 0 0 0 0 1 1 2 0 1 0 1 1 0 0 0 2 3 1 0 0 1 0 1 1 1
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda