когда я выдаю следующий код в 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
:
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. Я сбрасываю свой индекс, используя приведенный ниже код, который исправил ошибку.
train_df = train_df.reset_index()
Это напрямую не решает проблему, описанную в вопросе, но хотел оставить это здесь для справки на случай, если кто-нибудь столкнется с такой же ошибкой в будущем.