2017-03-14 20 views
2

我有一个熊猫数据帧Python的分组移调

out[1]: 
    NAME  STORE  AMOUNT 
0 GARY  GAP   20 
1 GARY  GAP   10 
2 GARY  KROGER  15 
3 ASHLEY FOREVER21 30 
4 ASHLEY KROGER  10 
5 MARK  GAP   10 
6 ROGER KROGER  30 

我试图让按名称分组,总结他们的花费总金额我的数据,同时还产生在数据帧的每个特色的小店列。 所需商品:

out[1]: 
    NAME  GAP  KROGER  FOREVER21 
0 GARY  30  15   0 
1 ASHLEY 0   10   30 
2 MARK  10  0    0 
3 ROGER  0   30   0 

感谢您的帮助!

回答

3

您需要pivot_table

df1 = df.groupby(['NAME','STORE'])['AMOUNT'].sum().unstack(fill_value=0) 
print (df1) 
STORE FOREVER21 GAP KROGER 
NAME       
ASHLEY   30 0  10 
GARY   0 30  15 
MARK   0 10  0 
ROGER   0 0  30 

最后,如果从指数值需要的列和删除列和索引名:

print (df1.reset_index().rename_axis(None, axis=1).rename_axis(None)) 
    NAME FOREVER21 GAP KROGER 
0 ASHLEY   30 0  10 
1 GARY   0 30  15 
2 MARK   0 10  0 
3 ROGER   0 0  30 

df1 = df.pivot_table(index='NAME', 
        columns='STORE', 
        values='AMOUNT', 
        aggfunc='sum', 
        fill_value=0) 
print (df1) 
STORE FOREVER21 GAP KROGER 
NAME       
ASHLEY   30 0  10 
GARY   0 30  15 
MARK   0 10  0 
ROGER   0 0  30 

groupbysum聚集的替代解决方案

+0

感谢您的快速和有益的回应! – nonegiven72