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