Tengo un dataframe que se parece a:
SK_ID_CURR CREDIT_ACTIVE 0 215354 Closed 1 215354 Active 2 215354 Active 3 215354 Active 4 215354 Active 5 215354 Active 6 215354 Active 7 162297 Closed 8 162297 Closed 9 162297 Active
Me gustaría agregar el número de créditos activos y cerrados para cada ID y luego crear una nueva columna para Closed_credits
, Closed_credits
con el número de créditos activos y cerrados correspondientes para cada ID.
Puede usar pandas.crosstab
, que evita el paso intermedio sugerido:
res = pd.crosstab(df['SK_ID_CURR'], df['CREDIT_ACTIVE']) print(res) CREDIT_ACTIVE Active Closed SK_ID_CURR 162297 1 2 215354 6 1
Puedes lograr esto usando pd.DataFrame.groupby
df1.groupby(['SK_ID_CURR','CREDIT_ACTIVE']).size()
Salida:
SK_ID_CURR CREDIT_ACTIVE 162297 Active 1 Closed 2 215354 Active 6 Closed 1