【发布时间】:2016-08-06 18:25:21
【问题描述】:
我有类似熊猫数据框的东西,叫做 gps
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 个标签,这就是为什么我需要第二个选项来工作。
为什么会出现这个错误?我究竟做错了什么?有什么诀窍?
【问题讨论】:
-
您的两个代码都应该可以工作(即使使用
groupby是一个更通用的解决方案)。您是否绝对确定您的第二个代码会产生您所说的错误(使用您提供的输入)? -
为我工作。您使用的是哪个版本的 Python 和 Pandas?
-
python 2.1.11,熊猫 0.17.1
-
好吧,我发现我的错误,而不是 3 我有一个不是整数的变量的名称,更改了它,谢谢你告诉我它对你有用,我注意到它是唯一的区别
标签: python arrays pandas typeerror