这个变量不打印的原因是什么?

时间:2014-04-28 17:29:30

标签: python variables loops

这是我写的一个程序。我只是想知道为什么我的全局变量ABSDEV_SUM在循环结束后没有打印。

# python_fitness_function

import pandas as pd
import itertools


infile_path = "C:\\Users\\Tim\\Dropbox\\Lela.com_DrBx\\APR14_query_work\\"

df = pd.DataFrame.from_csv(infile_path + "mp_viewed_item_AGG_affiliate_item_TOP_10.csv", sep=',', index_col=True)


groups = df.groupby('Affiliate_ID')


df_cameta = groups.get_group("cameta")

cols = list(df_cameta.columns)

while 'Affiliate_ID' in cols:
    cols.remove('Affiliate_ID')

Motivator_list = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"]

index = 0
ABSDEV_SUM = 0

for i in cols:
    column = df[i]
    AbsDev = sum(abs(pair[1] - pair[0]) for pair in itertools.combinations(column, 2))
    ABSDEV_SUM = ABSDEV_SUM + AbsDev
    print "Motivator_" + Motivator_list[index] + "_Mean_AbsDev"
    print AbsDev
    index += 1

print ABSDEV_SUM

任何人都可以为我阐明这一点吗?对不起,如果这似乎是一个微不足道的步骤。

我在循环终止时得到这段代码:

  File "~\APR14_query_work\python_fitness_function.py", line 37, in <module>
    print "Motivator_" + Motivator_list[index] + "_Mean_AbsDev"
IndexError: list index out of range
[Finished in 0.4s with exit code 1]

我认为正在发生的事情是它经历了一个额外的循环迭代,抛出“超出范围”错误,然后根本不打印因为它终止。我不知道是不是这样,似乎是这样,但我无法确定原因。

我已经尝试在循环中改变我的线条,但无济于事。

1 个答案:

答案 0 :(得分:0)

错误消息确实意味着Python终止程序,因为它检测到不可恢复的异常。

问题是index中的值大于Motivator_list中的元素数。

(一个典型的问题是一个接一个 - 你在最后一次迭代中创建一个刚刚超过列表末尾的索引,也许是因为你从1而不是0开始?在这种情况下,看起来很简单df_cameta.columns包含的值多于Motivator_list中的12个值。也许会使列表更长?或者根据需要动态增长?)