Create cols based on rows pandas

I have a df that can be seen below where I have the column ‘sex’ which indicates female/male and a column count which is the number of females/males present.

region organismo_nombre sexo conteo
Región Metropolitana de Santiago subsecretaria de derechos humanos F 56
Región Metropolitana de Santiago subsecretaria de derechos humanos M 35
Región Metropolitana de Santiago subsecretaria de evaluación social F 121
Región Metropolitana de Santiago subsecretaria de evaluación social M 106

I want instead of having two rows, to have only one with column ‘F’ indicating the number of women and column ‘M’ indicating the number of men.
I did some tests with df.pivot but I still had two rows left. How could I achieve the df below?

region organismo_nombre F M
Región Metropolitana de Santiago subsecretaria de derechos humanos 56 35
Región Metropolitana de Santiago subsecretaria de evaluación social 121 106

>Solution :

use pd.pivot

df.pivot(index=['region','organismo_nombre'], columns='sexo').reset_index()

    region                              organismo_nombre                      conteo
sexo                                                                          F     M
0   Región Metropolitana de Santiago    subsecretaria de derechos humanos    56     35
1   Región Metropolitana de Santiago    subsecretaria de evaluación social  121     106

Leave a Reply