分组并汇总熊猫

时间:2019-08-26 02:17:14

标签: python-3.x pandas group-by

我有这个数据框,并给出了每一列的数据:

index = [1, 2, 3, 4, 5, 6, 7]
a = [1247, 1247, 1247, 1247, 1539, 1539, 1539]
b = ['Group_A', 'Group_A', 'Group_B', 'Group_B', 'Group_B', 'Group_B', 'Group_A']
c = [np.nan, 23, 30, 27, 18, 42, 40]
d = [50, 51, 67, np.nan, 44, 37, 49]
df = pd.DataFrame({'ID': a, 'Group': b, 'Unit_sold_1': c, 'Unit_sold_2':d})

如果我想对每个ID的Unit_sold求和,则可以使用以下代码:

df.groupby(df['ID']).agg({'Unit_sold_1':'sum', 'Unit_sold_2':'sum'})

但是,如果我想按ID分组然后按Group分组,我应该怎么编码。结果看起来像这样:

     ID  Group_A_sold_1  Group_B_sold_1  Group_A_sold_2  Group_B_sold_2
0  1247              23              57             101              67
1  1539              40              60              49              81

1 个答案:

答案 0 :(得分:2)

使用pivot_table进行操作,然后合并列

s=df.pivot_table(index='ID',columns='Group',values=['Unit_sold_1','Unit_sold_2'],aggfunc='sum')
s.columns=s.columns.map('_'.join)
s.reset_index(inplace=True)
      Unit_sold_1_Group_A  ...  Unit_sold_2_Group_B
ID                         ...                     
1247                 23.0  ...                 67.0
1539                 40.0  ...                 81.0
[2 rows x 4 columns]