«Метка [0] отсутствует в [index]»

1

когда я выдаю следующий код в python, где myfun - это имя моей функции, B - это кадр данных Panda:

myfun(B,10)

он дает ошибку в этой строке в функции

A=(data.loc[ii]>=A1) & (data.loc[ii]<A2)

где B и данные одинаковы, а A1 и A2 - числа. Ошибка заключается в следующем:

'the label [0] is not in the [index]'

Я читал все на вашем сайте, это не относится к моему делу. как никто не объяснил, о чем говорит эта ошибка.

Может ли кто-нибудь сказать, где, возможно, у меня возникнут проблемы и как я могу это исправить? Что еще означает сказать, что метка [0] не находится в [index]? что есть метка [0] в моем случае.

Теги:
pandas
numpy

2 ответа

1
Лучший ответ

Из документации pandas:

DataFrame.loc

Доступ к группе строк и столбцов по меткам (-ам) или логическому массиву. .loc [] в первую очередь основан на метке, но может также использоваться с булевым массивом. Допустимыми входами являются:

  • Единая метка, например 5 или "a" (обратите внимание, что 5 интерпретируется как метка индекса и никогда не является целочисленной позицией по индексу).

  • Список или массив меток, например ['a', 'b', 'c'].

  • Объект среза с метками, например 'a': 'f'.

  • Булевой массив той же длины, что и отрезанная ось, например [True, False, True].

  • Вызываемая функция с одним аргументом (вызывающая серия, DataFrame или панель) и возвращает действительный вывод для индексирования (один из указанных выше)

Поскольку я предполагаю, что ii имеет тип integer, вам нужно вместо этого использовать df.iloc:

A = (data.iloc[ii] >= A1) & (data.iloc[ii] < A2)
0

Эта ошибка также возникает, когда ваш индекс не начинается с 0. Я сбрасываю свой индекс, используя приведенный ниже код, который исправил ошибку.

train_df = train_df.reset_index()

Это напрямую не решает проблему, описанную в вопросе, но хотел оставить это здесь для справки на случай, если кто-нибудь столкнется с такой же ошибкой в будущем.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню