Tengo un marco de datos de pandas de varios niveles que estoy tratando de nivelar. Uso reset_index pero me da el error de que el nombre ya existe.
No quiero usar reset_index(drop=True) porque quiero mantener uno de los nombres de las columnas.
quiero como mi nuevo marco de datos:
país,barrio_listado,recuento
ahora mismo,
df.columns solo da count .
mi código:
df.columns = ['count'] df.reset_index() -> gives error that `ValueError: cannot insert country, already exists`También probé:
df.columns.droplevel(0) -> da error de que 'Index' object has no attribute 'droplevel'
Necesita eliminar el primer nivel duplicado:
df = pd.DataFrame({ 'A':list('abcdef'), 'B':[4,5,4,5,5,4], 'C':[7,8,9,4,2,3], 'F':list('aaabbb') }) df = (df.set_index(['A','F','C']) .rename_axis(['country','country','listing_neighborhood']) .rename(columns={'B':'count'})) print (df) count country country listing_neighborhood aa 7 4 ba 8 5 ca 9 4 db 4 5 eb 2 5 fb 3 4 df = df.reset_index(level=0, drop=True).reset_index() print (df) country listing_neighborhood count 0 a 7 4 1 a 8 5 2 a 9 4 3 b 4 5 4 b 2 5 5 b 3 4O:
df = df.droplevel(0).reset_index()Puede cambiar el nombre existente para que ya no se duplique:
df.reset_index(nombre="nuevo_nombre")
Espero que esto ayude