将特定的pandas数据行转换为multiindex

时间:2016-07-16 04:27:51

标签: python pandas dataframe multi-index

这是我的DataFrame:

          0     1        2
0 0      0.0  20.0      NaN
  1      1.0  21.0      NaN
  2      2.0  22.0      NaN
  ID     NaN   NaN  11111.0
  Year   NaN   NaN   2011.0
1 0      3.0  23.0      NaN
  1      4.0  24.0      NaN
  2      5.0  25.0      NaN
  3      6.0  26.0      NaN
  ID     NaN   NaN  11111.0
  Year   NaN   NaN   2012.0

我想将'ID'和'Year'行转换为dataframe Index,其中'ID'为level = 0且'Year'为level = 1。我尝试使用stack()但仍然无法弄清楚。

编辑:我想要的输出应如下所示:

                      0     1 
  11111  2011 0      0.0  20.0
              1      1.0  21.0
              2      2.0  22.0
         2012 0      3.0  23.0
              1      4.0  24.0
              2      5.0  25.0
              3      6.0  26.0 

1 个答案:

答案 0 :(得分:0)

这应该有效:

df1 = df.loc[pd.IndexSlice[:, ['ID', 'Year']], '2']
dfs = df1.unstack()
dfi = df1.index
dfn = df.drop(dfi).drop('2', axis=1).unstack()

dfn.set_index([dfs.ID, dfs.Year]).stack()

enter image description here