Revenirea de la multiindex la un singur index dataframe în pandas (Programare, Python, Pandas)

user308827 a intrebat.
a intrebat.
                       NI
YEAR MONTH datetime        
2000 1     2000-01-01   NaN
           2000-01-02   NaN
           2000-01-03   NaN
           2000-01-04   NaN
           2000-01-05   NaN

În dataframe-ul de mai sus, am un indice multinivel format din coloanele:

names=[u'YEAR', u'MONTH', u'datetime']

Cum pot reveni la un dataframe cu „datatime” ca indice și „YEAR” și „MONTH” ca coloane normale?

2 răspunsuri
EdChum

treceți level=[0,1] pentru a reseta doar acele niveluri:

dist_df = dist_df.reset_index(level=[0,1])

In [28]:
df.reset_index(level=[0,1])

Out[28]:
            YEAR  MONTH  NI
datetime                     
2000-01-01  2000      1   NaN
2000-01-02  2000      1   NaN
2000-01-03  2000      1   NaN
2000-01-04  2000      1   NaN
2000-01-05  2000      1   NaN

puteți trece alternativ numele etichetelor:

df.reset_index(level=['YEAR','MONTH'])

Comentarii

    17

  • Ce se întâmplă dacă este dist_df.columns sunt MultiIndex, nu rânduri? –  > Por Dzmitry Lazerka.
  • @DzmitryLazerka îmi pare rău că nu înțeleg comentariul dvs., dacă aveți o întrebare vă rugăm să postați o întrebare nouă, răspunsul la întrebări în comentarii nu este o formă bună pe SO –  > Por EdChum.
  • @DzmitryLazerka pentru a aplatiza un index de coloană / rând multiindex (ierarhic), puteți utiliza .to_flat_index(). Consultați acest răspuns pentru un exemplu de cod –  > Por onlyphantom.
  • Acest lucru ar schimba ordinea din matrice? –  > Por meesinlid.
Shujaath Khan

O altă modalitate simplă ar fi să setați coloanele pentru dataframe

consolidated_data.columns=country_master

ref: https://riptutorial.com/pandas/example/18695/how-to-change-multiindex-columns-to-standard-columns