onehotencoder one hot example estimator dummies python pandas dataframe one-hot-encoding

python - one - agregando columnas ficticias al marco de datos original



one hot encoding python pandas example (1)

Tengo un marco de datos que se ve así:

            JOINED_CO GENDER    EXEC_FULLNAME  GVKEY  YEAR  CONAME  BECAMECEO  REJOIN   LEFTOFC    LEFTCO  RELEFT    REASON  PAGE CO_PER_ROL                                                                                                                                      5622              NaN   MALE   Ira A. Eichner   1004  1992  AAR CORP   19550101     NaN  19961001  19990531     NaN  RESIGNED    79 5622              NaN   MALE   Ira A. Eichner   1004  1993  AAR CORP   19550101     NaN  19961001  19990531     NaN  RESIGNED    79 5622              NaN   MALE   Ira A. Eichner   1004  1994  AAR CORP   19550101     NaN  19961001  19990531     NaN  RESIGNED    79 5622              NaN   MALE   Ira A. Eichner   1004  1995  AAR CORP   19550101     NaN  19961001  19990531     NaN  RESIGNED    79 5622              NaN   MALE   Ira A. Eichner   1004  1996  AAR CORP   19550101     NaN  19961001  19990531     NaN  RESIGNED    79 5622              NaN   MALE   Ira A. Eichner   1004  1997  AAR CORP   19550101     NaN  19961001  19990531     NaN  RESIGNED    79 5622              NaN   MALE   Ira A. Eichner   1004  1998  AAR CORP   19550101     NaN  19961001  19990531     NaN  RESIGNED    79 5623              NaN   MALE  David P. Storch   1004  1992  AAR CORP   19961009     NaN       NaN       NaN     NaN       NaN    57 5623              NaN   MALE  David P. Storch   1004  1993  AAR CORP   19961009     NaN       NaN       NaN     NaN       NaN    57 5623              NaN   MALE  David P. Storch   1004  1994  AAR CORP   19961009     NaN       NaN       NaN     NaN       NaN    57 5623              NaN   MALE  David P. Storch   1004  1995  AAR CORP   19961009     NaN       NaN       NaN     NaN       NaN    57 5623              NaN   MALE  David P. Storch   1004  1996  AAR CORP   19961009     NaN       NaN       NaN     NaN       NaN    57

Para el valor de AÑO, me gusta agregar columnas de año (1993,1994 ..., 2009) al marco de datos original. Si el valor en AÑO es 1992, entonces el valor en la columna de 1992 debería ser 1 de lo contrario 0.

Utilicé un bucle for muy estúpido, pero parece que se ejecuta para siempre ya que tengo un gran conjunto de datos. ¿Podría alguien ayudarme con eso, muchas gracias!


In [77]: df = pd.concat([df, pd.get_dummies(df[''YEAR''])], axis=1); df Out[77]: JOINED_CO GENDER EXEC_FULLNAME GVKEY YEAR CONAME BECAMECEO / 5622 NaN MALE Ira A. Eichner 1004 1992 AAR CORP 19550101 5622 NaN MALE Ira A. Eichner 1004 1993 AAR CORP 19550101 5622 NaN MALE Ira A. Eichner 1004 1994 AAR CORP 19550101 5622 NaN MALE Ira A. Eichner 1004 1995 AAR CORP 19550101 5622 NaN MALE Ira A. Eichner 1004 1996 AAR CORP 19550101 5622 NaN MALE Ira A. Eichner 1004 1997 AAR CORP 19550101 5622 NaN MALE Ira A. Eichner 1004 1998 AAR CORP 19550101 5623 NaN MALE David P. Storch 1004 1992 AAR CORP 19961009 5623 NaN MALE David P. Storch 1004 1993 AAR CORP 19961009 5623 NaN MALE David P. Storch 1004 1994 AAR CORP 19961009 5623 NaN MALE David P. Storch 1004 1995 AAR CORP 19961009 5623 NaN MALE David P. Storch 1004 1996 AAR CORP 19961009 REJOIN LEFTOFC LEFTCO RELEFT REASON PAGE 1992 1993 1994 / 5622 NaN 19961001 19990531 NaN RESIGNED 79 1 0 0 5622 NaN 19961001 19990531 NaN RESIGNED 79 0 1 0 5622 NaN 19961001 19990531 NaN RESIGNED 79 0 0 1 5622 NaN 19961001 19990531 NaN RESIGNED 79 0 0 0 5622 NaN 19961001 19990531 NaN RESIGNED 79 0 0 0 5622 NaN 19961001 19990531 NaN RESIGNED 79 0 0 0 5622 NaN 19961001 19990531 NaN RESIGNED 79 0 0 0 5623 NaN NaN NaN NaN NaN 57 1 0 0 5623 NaN NaN NaN NaN NaN 57 0 1 0 5623 NaN NaN NaN NaN NaN 57 0 0 1 5623 NaN NaN NaN NaN NaN 57 0 0 0 5623 NaN NaN NaN NaN NaN 57 0 0 0 1995 1996 1997 1998 5622 0 0 0 0 5622 0 0 0 0 5622 0 0 0 0 5622 1 0 0 0 5622 0 1 0 0 5622 0 0 1 0 5622 0 0 0 1 5623 0 0 0 0 5623 0 0 0 0 5623 0 0 0 0 5623 1 0 0 0 5623 0 1 0 0

Si desea eliminar la columna YEAR , puede continuar con del df[''YEAR''] . O bien, elimine la columna YEAR de df antes de llamar a concat :

df = pd.concat([df.drop(''YEAR'', axis=1), pd.get_dummies(df[''YEAR''])], axis=1)