我确定我尝试访问的范围存在,但程序仍然显示错误。我正在尝试制作一个程序,该程序将对与另一列中的值相对应的一列中的值求和。
例如:
28400 4
28400 34
28400 9
65478 2
65478 5
65478 3
我的程序要做的是,它将 4,34 和 9 相加,然后将 2,5 和 3 相加,然后是输出-
47
47
47
10
10
10
我正在从 CSV 文件导入数据。以下是代码-
import pandas as pd
import numpy as np
assessment = pd.read_csv('/home/user/Documents/MOOC dataset original/studentVle2.csv')
assessment = assessment.values
count=0
stucount=28400
sumc=[]
i=0
for stu in assessment[:,2:3]:
if(stucount==stu):
count = count + assessment[i,5]
i=i+1
else:
sumc.append(count)
count = 0
count = count + assessment[i,5]
i=i+1
stucount=stu
#print(sumc)
stucount=28400
i=0
a=[]
for stu in assessment[:,2:3]:
if(stucount==stu):
a.append(sumc[i])
stucount = stu
else:
i=i+1
a.append(sumc[i])
stucount = stu
print(a)
错误:
File "/home/user/Documents/final project files/test.py", line 36, in <module>
a.append(sumc[i])
IndexError: list index out of range
顺便说一下,在添加一些行之前,比如 i=i+1,stucount=stu 这个错误没有显示出来,但现在它显示了,即使发生的事情是一样的。
最佳答案
错误是因为您没有在循环结束后将评估值添加到最后一个学生的 sumc
列表中。因此,对于 n
个唯一学生 ID,列表长度仅为 n-1
。在for
循环之后,添加sumc.append(count)
。见下文。
assessment = assessment.values
count=0
stucount=28400
sumc=[]
i=0
for stu in assessment[:,2:3]:
if(stucount==stu):
count = count + assessment[i,5]
i=i+1
else:
sumc.append(count)
count = 0
count = count + assessment[i,5]
i=i+1
stucount=stu
sumc.append(count)
print(sumc)
stucount=28400
i=0
a=[]
for stu in assessment[:,2:3]:
if(stucount==stu):
a.append(sumc[i])
stucount = stu
else:
a.append(sumc[i])
stucount = stu
i=i+1
print(a)
关于python - IndexError : list index out of range when in python, 即使范围存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51454081/