Agregar un nivel a un pandIndex MultiIndex

Digamos que tengo un dataframe de pandas con tres índices ‘a’, ‘b’ y ‘c’. ¿Cómo puedo agregar un cuarto índice de una matriz y establecer su nombre en ‘d’ al mismo tiempo?

Esto funciona:

df.set_index(fourth_index, append=True, inplace=True) df.index.set_names(['a','b','c','d'], inplace=True) 

Pero estoy buscando algo que no requiera que también vuelva a nombrar los primeros tres índices, por ejemplo (esto no funciona):

 df.set_index({'d': fourth_index}, append=True, inplace=True) 

¿Me estoy perdiendo alguna función aquí?

Agregue fourth_index como una columna y luego llame a set_index . El nombre se conserva.

 df = df.assign(d=fourth_index).set_index('d', append=True) 

Tenga en cuenta que si está preocupado por la memoria, lo que está haciendo está bien tal como está. No tiene sentido sacrificar el rendimiento por menos caracteres.


Manifestación

 df abcd l1 l2 bar one 24 13 8 9 two 11 30 7 23 baz one 21 31 12 30 two 2 5 19 24 foo one 15 18 3 16 two 2 24 28 11 qux one 23 9 6 12 two 29 28 11 21 df.assign(l3=1).set_index('l3', append=True) abcd l1 l2 l3 bar one 1 24 13 8 9 two 1 11 30 7 23 baz one 1 21 31 12 30 two 1 2 5 19 24 foo one 1 15 18 3 16 two 1 2 24 28 11 qux one 1 23 9 6 12 two 1 29 28 11 21