我有以下数据:
因此,对于每个设备,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来实现。有人可以帮帮我吗?
答案 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