Pandas sum()TypeError:只能将length-1数组转换为Python标量

时间:2016-04-14 23:50:07

标签: python arrays pandas typeerror

我有类似这个名为 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个以上的标签上有更多的值,这就是为什么我需要第二个选项才能工作。

为什么会出现此错误?我究竟做错了什么?怎么办?

1 个答案:

答案 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