Per fornire un po 'più di chiarezza, diamo un'occhiata a DataFrame con due livelli nel suo indice (un MultiIndex).
index = pd.MultiIndex.from_product([['TX', 'FL', 'CA'],
['North', 'South']],
names=['State', 'Direction'])
df = pd.DataFrame(index=index,
data=np.random.randint(0, 10, (6,4)),
columns=list('abcd'))

Procedimento reset_index
, chiamato con i parametri di default, converte tutti i livelli di indice a colonne e utilizza un semplice RangeIndex
come nuovo indice.
df.reset_index()

utilizzare il parametro level
per controllare quali livelli dell'indice sono convertiti in colonne. Se possibile, usa il nome del livello, che è più esplicito. Se non ci sono nomi di livelli, puoi fare riferimento a ciascun livello in base alla posizione intera, che inizia da 0 dall'esterno. Puoi qui utilizzare un valore scalare o un elenco di tutti gli indici che desideri ripristinare.
df.reset_index(level='State') # same as df.reset_index(level=0)

Nel raro caso in cui si desidera conservare l'indice e ruotare l'indice in una colonna, è possibile effettuare le seguenti operazioni:
# for a single level
df.assign(State=df.index.get_level_values('State'))
# for all levels
df.assign(**df.index.to_frame())
fonte
2017-10-24 22:04:27
tenere a mente che si deve fai questo n volte per ogni indice che possiedi (es. se hai due indici, allora devi farlo due volte) – dval
Con 'df.reset_index (level = df.index.names, inplace = True)' si può convertire un dato intero multiindice in colonne – venti
Puoi avere un indice sulla colonna tu appena aggiunto al dataframe quindi è una colonna vera E un indice? – bretcj7