Python 如何将具有分层索引的分组df变回具有多级索引的df

Python 如何将具有分层索引的分组df变回具有多级索引的df,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,我的数据帧: df = pd.DataFrame([["2012-01-06",1,"a",2],["2012-01-06",1,"b",3],["2012-01-06",1,"b",4],["2012-01-06",1,"b",5],["2012-02-06",2,"a",3],["2012-02-06",2,"a",4],["2012-02-06",3,"b",3],["2012-03-06",5,"b",3]],columns=["date","id","type", "amount"])

我的数据帧:

df = pd.DataFrame([["2012-01-06",1,"a",2],["2012-01-06",1,"b",3],["2012-01-06",1,"b",4],["2012-01-06",1,"b",5],["2012-02-06",2,"a",3],["2012-02-06",2,"a",4],["2012-02-06",3,"b",3],["2012-03-06",5,"b",3]],columns=["date","id","type", "amount"])
df = df.set_index(["date","id","type"])
df
结果:

                    amount
date       id type        
2012-01-06 1  a          2
              b          3
              b          4
              b          5
2012-02-06 2  a          3
              a          4
           3  b          3
2012-03-06 5  b          3
在我执行分组之后

gr = df.groupby(df.index).agg({'amount':sum})
gr
我得到:

                    amount
(2012-01-06, 1, a)       2
(2012-01-06, 1, b)      12
(2012-02-06, 2, a)       7
(2012-02-06, 3, b)       3
(2012-03-06, 5, b)       3
我需要做什么才能将
gr
转换为与原始
df
相同的结构,即

                    amount
date       id type        
2012-01-06 1  a          2
              b         12
2012-02-06 2  a          7
           3  b          3
2012-03-06 5  b          3

改为使用数据帧的级别进行分组:

df.groupby(level=[0,1,2]).amount.sum()

    date        id  type
2012-01-06  1   a        2
                b       12
2012-02-06  2   a        7
            3   b        3
2012-03-06  5   b        3
Name: amount, dtype: int64
level
参数一起使用,工作方式与
groupby
level
参数相同:

s = df.amount.sum(level=[0,1,2])
print (s)
date        id  type
2012-01-06  1   a        2
                b       12
2012-02-06  2   a        7
            3   b        3
2012-03-06  5   b        3
Name: amount, dtype: int64