2017-07-24 88 views
2

我一直希望有人能够帮助我解决一些相对简单的问题,我一直在努力。最近,我用groupby在我df总结了不同的群体,你可以看到如下:格式化熊猫groupby()进行合并

     MSA.name ifr.industry 
0 Abilene, TX Metro Area   90 
1 Abilene, TX Metro Area   P 
2 Abilene, TX Metro Area   90 
3 Abilene, TX Metro Area   F 
4 Abilene, TX Metro Area   90 
5 Abilene, TX Metro Area   90 
6 Abilene, TX Metro Area   90 
7 Abilene, TX Metro Area   90 

然后我总结的员工在同行业df.groupby(['MSA.name', 'ifr.industry'])['employees'].sum()

MSA.name    ifr.industry  employees 
Abilene, TX Metro Area 10-12    720 
         13-15    70 
         16     87 
         17-18    54 
         20-21    77 
         22     403 
         23     324 
         24     383 
         25     701 
         28     310 
         29     198 
         30     233 

不过,我想合并这回到原来的df,但我看不出如何轻松做到这一点。我想知道在执行groupby()之后是否有某种方法可以groupby()列出MSA.name的每个观察结果。

+0

'df.groupby([ 'MSA.name', 'ifr.industry'])”员工']。sum()。reset_index()' – Wen

+0

@Wen绝对令人惊叹,非常感谢! –

+1

我添加另一种方法,可以保存'合并'步骤 – Wen

回答

3

试试这个第一df.groupby(['MSA.name', 'ifr.industry'])['employees'].sum().reset_index()

也,你不需要merge这里,使用transform

df['sum']=df.groupby(['MSA.name', 'ifr.industry'])['employees'].transform(sum) 
+0

非常感谢你,这已经非常翔实! –

+0

@丹尼,很高兴帮助〜祝你有美好的一天 – Wen