Часто при работе с библиотекой 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[]
, можно легко выбирать нужные строки по метке или по позиции.
Добавить комментарий