从pandas中的multiindex恢复到单个索引数据帧

use*_*827 30 python pandas

                       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
Run Code Online (Sandbox Code Playgroud)

在上面的数据框中,我有一个由列组成的多级索引:

names=[u'YEAR', u'MONTH', u'datetime']
Run Code Online (Sandbox Code Playgroud)

如何恢复为'datetime'作为索引,'YEAR'和'MONTH'作为普通列的数据框?

EdC*_*ica 33

传递level=[0,1]给重置那些级别:

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
Run Code Online (Sandbox Code Playgroud)

您可以选择传递标签名称:

df.reset_index(level=['YEAR','MONTH'])
Run Code Online (Sandbox Code Playgroud)

  • 如果它的`dist_df.columns`是MultiIndex而不是行,该怎么办? (8认同)
  • @DzmitryLazerka 要展平多索引(分层)列/行索引,您可以使用`.to_flat_index()`。请参阅[代码示例的此答案](/sf/answers/3902990171/) (8认同)

小智 8

另一种简单的方法是为数据框设置列

consolidated_data.columns=country_master
Run Code Online (Sandbox Code Playgroud)

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