Часто при работе с библиотекой pandas, которая широко используется для обработки данных в Python, возникает необходимость выбрать определенную строку из серии или dataframe по указанному индексу. Казалось бы, логично использовать обычный синтаксис Python для доступа к элементам списка или массива по индексу, например, df[2]. Однако при попытке выполнить такую операцию, часто можно столкнуться с ошибкой.
При этом, другие способы доступа к строкам, такие как df.ix[2] или df[2:3], работают без проблем. Это может вызвать некоторое недоумение и вопросы о причинах такого поведения pandas.
Почему df[2] не работает?
В pandas существуют некоторые особенности индексации, которые отличаются от стандартного поведения Python. Одна из таких особенностей — это то, что df[2] пытается выбрать данные по метке, а не по целочисленному индексу.
Если в dataframe используются целочисленные метки, то df[2] будет работать, но выберет не строку с индексом 2, а строку с меткой 2. Если же метки не являются числами или нет метки 2, то будет выдана ошибка.
Как правильно выбрать строку по индексу?
Вместо использования df[2], в pandas предлагается использовать функции .loc[] или .iloc[] для выбора данных по метке или по позиции соответственно.
Функция .iloc[] работает аналогично обычной индексации в Python, то есть df.iloc[2] выберет третью строку в dataframe независимо от её метки.
df.iloc[2]
Функция .loc[], в свою очередь, используется для доступа по метке, то есть df.loc[2] выберет строку с меткой 2.
df.loc[2]
Заключение
В pandas используются некоторые нестандартные способы индексации, которые могут вводить в заблуждение. Однако зная об этих особенностях и используя функции .loc[] и .iloc[], можно легко выбирать нужные строки по метке или по позиции.
Перейти в телеграм, чтобы получить результаты теста





Забрать
Добавить комментарий