2013-08-03 4 views
0

Когда я использую этот код, он печатает все в порядке, а потом дает мне ошибку: KeyError: 14425L Код:Python - KeyError: 14425L

i = 0 
while (i <= len(data)): 
    print data.ix[i]['Params'] 
    i += 1 

BTW:

data.keys() 
Out[67]: Index([u'Email Address', u'Hashed Email', u'Timestamp', u'Session Index', u'Event', u'Description', u'Version', u'Platform', u'Device', u'Params'], dtype=object) 
+1

Почему вы перебираете индексы с использованием явного цикла while? Он * должен * иметь возможность использовать вместо этого простой символ 'for' (который предотвращает подобные ошибки и имеет меньшие накладные расходы). – Bakuriu

+0

Какой тип объекта 'data'? –

+0

Итерация по индексу непитоническая - она ​​медленная, трудная для чтения и работает только с последовательностями, а не с произвольными итерами. –

ответ

3

список Python индексы 0 на основе, так len(data) не является допустимым индексом.

Использование

while (i < len(data)): 

вместо этого.

Однако, похоже, что вы перебираете рамку данных Pandas. Вы можете просмотреть iterating row by row through a pandas dataframe и What is the most efficient way to loop through dataframes with pandas?

+0

Спасибо. Извините за немой вопрос :) – erantdo

2

Вы получаете индекс за последний. Максимальный индекс списка - len(data) - 1.

while (i <= len(data)): 

должно быть:

while (i < len(data)):