我有类似这个名为 gps
的pandas数据框 a b label importe
1 x y 1 500.2
2 y z 0 300.4
3 z x 0 200.3
4 x z 2 300.6
5 y y 1 200.7
我想在数组中添加'importe'与相同标签的总和,所以:
print [gps.importe[gps.label == 0].sum(),gps.importe[gps.label == 1].sum(),gps.importe[gps.label == 2].sum()]
给了我
[500.7, 700.9, 300.6]
我想要的,但这样:
print [gps.importe[gps.label == i].sum() for i in range(3)]
给了我
TypeError: only length-1 arrays can be converted to Python scalars
我实际上在pandas数据框和3个以上的标签上有更多的值,这就是为什么我需要第二个选项才能工作。
为什么会出现此错误?我究竟做错了什么?怎么办?
答案 0 :(得分:0)
是你想要的吗?
In [191]: df.groupby('label').agg({'importe':'sum'})
Out[191]:
importe
label
0 500.7
1 700.9
2 300.6
或:
In [192]: df.groupby('label')['importe'].sum()
Out[192]:
label
0 500.7
1 700.9
2 300.6
Name: importe, dtype: float64