python - IndexError : list index out of range when in python, 即使范围存在

标签 python pandas numpy

我确定我尝试访问的范围存在,但程序仍然显示错误。我正在尝试制作一个程序,该程序将对与另一列中的值相对应的一列中的值求和。

例如:

   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/

相关文章:

python - 在 Python 中获取图像的左侧

python - 选择所有 float 类型的所有列

python - python 中的数学公式不起作用

python - 使用Python下载的PDF文件无法在acrobat中打开

python - 从Docker容器300秒后,Python HTTP GET引发异常

python - 用 1 替换 Pandas 数据框中的非零值

python - 是否有 pandas 函数可以从累积和返回瞬时值?

python - 如何删除 Pandas 数据框中的索引名称?

python - 将变量与多个值进行比较的简洁方法

python - Windows - 直接运行 .py 与运行 python blah.py 的行为不同