IndexError при использовании iloc

avatar
SirAchesis
8 августа 2021 в 18:41
28
1
0

В настоящее время я просматриваю индекс фрейма данных, а затем пытаюсь выбрать строку, используя этот индекс. Код выглядит следующим образом.

for index in clean_data.index:
    data_row = clean_data.iloc[[indx]]

Однако я получаю сообщение об ошибке:

IndexError: positional indexers are out-of-bounds

Структура моего фрейма данных выглядит следующим образом:

   game_week  game_day  game_month
1          2        15           1
2          3        17           1

Код нормально обрабатывает первый индекс, но выдает ошибку при обработке значения 2 для индекса.

Я не могу использовать iterrows или itertuples из-за необходимости индекса в остальной части моего кода.
Мне также нужно, чтобы формат оставался в виде фрейма данных, поэтому я подаю индекс внутри списка. (В противном случае будет возвращен ряд)

Источник

Ответы (1)

avatar
mozway
8 августа 2021 в 18:44
1

Перебирая индекс, вы используете ключи индекса, а не абсолютные позиции. Либо замените iloc на loc, либо повторите range(len(clean_data.index))

То, что вы делаете, будет работать, только если индекс равен 0,1,2,…,n-1 для n строк. Это не тот случай, когда в вашем примере ключи 1,2 (не 0,1)

Вот практический пример:

>>> df = pd.DataFrame(list('ABC'), index=[2,1,7])
>>> df
   0
2  A
1  B
7  C
for index in df.index:
    print(df.loc[[index]])

и

for index in range(len(df)):
    print(df.iloc[[index]])

оба выхода:

   0
2  A
   0
1  B
   0
7  C

Но:

for index in df.index:
    print(df.iloc[[index]])

выходы:

IndexError: positional indexers are out-of-bounds