为合并格式化Pandas groupby()

时间:2017-07-24 17:55:38

标签: python pandas pandas-groupby

我希望有人可以帮助我做一些相对简单的事情。最近,我使用groupbydf中的不同群组进行了总结,如下所示:

                      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()之后MSA.name是否有groupby()列出每个观察import matplotlib.pyplot as plt from matplotlib import six import pandas as pd import numpy as np df = pd.DataFrame() df['x'] = np.arange(0,11) df['y'] = df['x']*2 fig = plt.figure(figsize=(8,5)) ax1 = fig.add_subplot(121) ax1.scatter(x=df['x'],y=df['y']) ax2 = fig.add_subplot(122) font_size=14 bbox=[0, 0, 1, 1] ax2.axis('off') mpl_table = ax2.table(cellText = df.values, rowLabels = df.index, bbox=bbox, colLabels=df.columns) mpl_table.auto_set_font_size(False) mpl_table.set_fontsize(font_size) 的方式。

1 个答案:

答案 0 :(得分:3)

首先尝试df.groupby(['MSA.name', 'ifr.industry'])['employees'].sum().reset_index()

此外,您在此处不需要使用merge

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