我想在总结系列时参考以前的自我。例如,我有以下数据框系列:
a = [2,5,7,8,3,5,9]
我想创建一个运行总和(让我们调用这个新系列" b"),它引用了前一项:
b = [0, 0+2, ((0+2)+5), ((0+2)+5)+7, ...]
我使用循环来执行此操作:
b=0
for i in range (len(a)):
b_temp=b[i-1]+a[i]
b.append(b_temp)
我收到错误消息:
'int' object is not subscriptable
非常感谢任何帮助!
答案 0 :(得分:1)
我想这是你正在寻找的实施
b=[0]
a=[2,5,7,8,3,5,9]
for i in range (len(a)-1):
if i-1>=0:
u=b[i-1]
else:
u=0
b_temp=u+a[i]
b.append(b_temp)
print (b)
<强>输出强>
[0, 2, 7, 14, 22, 25, 30]
您的代码存在的问题是,如果您将b初始化为0,则它变为整数且
然后调用b[i-1]
它不可订阅,因为它不是list
它是integer
你可以通过b=[]
答案 1 :(得分:0)
错误意味着对象就像列表或字典而不是整数变量因此它不是可订阅的。
因此您需要定义一个列表,例如b = []
创建一个变量来存储变量的总和,以后可以将这些变量附加到列表对象。
有关代码参考,您可以参考此链接 https://codereview.stackexchange.com/questions/149379/pythonic-way-to-add-each-previous-element-in-list
答案 2 :(得分:-1)
因为您设置了b=0
,b
不是列表或数据框,所以它是一个int。因此,它不是可订阅的。也许你想要b=[0]
?
(除此之外,由于你的第一次迭代i
为0,你将会寻找b[-1]
,这实际上会起作用,但可能不是你想要的原因)