在excel中使用pivot时聚合多行

时间:2017-12-27 11:53:36

标签: python pandas pivot

我有以下数据:

enter image description here

因此,对于每个设备,9月,10月和11月的10个通道都有数小时的数据,这些数据需要在device_id上​​旋转时进行求和,从而得出输出 将如图像的第二部分所示。

以下是文本格式的数据:

device_id   month_id channel    hours       brand
214 201711  A           2.311       S
214 201710  A           6.071       S
214 201709  A           0.55        S
214 201711  B           0.603       S
214 201710  B           2.185       S
214 201709  B           2.62        S
214 201711  C           0.82        S
214 201710  C           25.70       S
214 201709  C           17.73       S

Output:             
device_id   A       B           C           brand
214     8.933054    5.412499    44.261665   S

所有数据都在一个pandas数据框中,我想使用pivot来实现。有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

看起来您需要pivot_table操作 -

df = df.pivot_table(index=['device_id', 'brand'], 
                    columns='channel', 
                    values='hours', 
                    aggfunc=sum)\
       .reset_index()

df.columns.name = None
df

   device_id brand      A      B      C
0        214     S  8.932  5.408  44.25

答案 1 :(得分:1)

一衬垫:

df.groupby(["device_id", "brand", "channel"])["hours"].sum().unstack()

给出了:

channel              A      B      C
device_id brand                     
214       S      8.932  5.408  44.25