Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

363
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!