Технологии Blogger.

Как из Pandas Dataframe удалить строку?

Pandas представляет нам отличные инструменты для обработки данных, в том числе для удаления той информации, которая нам не нужна. В этой статье мы рассмотрим различные способы удаления строк из Dataframe Pandas.

Как из Pandas удалить строку?

Создадим учебный Dataframe с описанием городов России, с которым мы будем в дальнейшем работать:

import pandas as pd
city_data = {
    'Город':['Москва', 'Казань', 'Владивосток', 'Санкт-Петербург', 'Калининград'],
    'Дата основания':['1147', '1005', '1860', '1703', '1255'],
    'Площадь':['2511', '516', '331', '1439', '223'],
    'Население':['11,9', '1,2', '0,6', '4,9', '0,4'],
    'Погода':['8', '8', '17', '9', '12'] }
city_df = pd.DataFrame(city_data)
city_df

В Pandas для удаления строк, а также столбцов используется метод drop. Его синтаксис следующий (обратите внимание, что необязательно использовать все параметры, можно только те, которые необходимы нам):

drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise'), где:

  • labels – номера или названия столбцов для удаления
  • axis – значение 0, если вы хотите удалить строки, либо 1, если планируете удалять столбцы
  • index – определяет, какие строки надо удалить
  • columns – определяет, какие столбцы надо удалить
  • inplace – изменяет оригинальный Dataframe, если параметр равен True
  • errors – игнорируются ошибки, если параметр задан как ignore

Способ 1. Удаление строки в Pandas по ее индексу

Для каждой строки в Dataframe Pandas присваивает индекс, обычно это число. В нашем учебном Dataframe, к примеру, у Москвы индекс 0, а у Калининграда 4. Давайте уберем запись с Владивостоком:

city_df.drop(labels = [2],axis = 0)
Мы можем удалить несколько строк, перечислив их индексы через запятую в квадратных скобках:
city_df.drop(labels = [2,3],axis = 0)
Обратите внимание, что по умолчанию метод drop не изменяет исходный dataframe, если вы хотите, что бы это было сделано, добавьте параметр inplace=True
city_df.drop(labels = [4],axis = 0, inplace = True)

Как из Pandas удалить строку?

Способ 2. Удаление строки в Pandas по ее содержанию

Предположим, нам надо убрать строку с названием города «Казань», но мы не знаем его индекса и хотим ее удалить по названию. Для этого мы должны сначала изменить столбец с индексами и вместо цифровых значений задать данные из столбца «Город»:

city_df = city_df.set_index('Город')
city_df
Теперь, когда в качестве индексов у нас названия городов, мы можем выполнить поставленную перед нами задачу:
city_df.drop(['Казань'],axis = 0)
Мы можем удалить несколько строк по их содержанию в Pandas, перечислив их через запятую в квадратных скобках:
city_df.drop(['Казань','Владивосток'],axis = 0)

Как из Pandas удалить строку?


Способ 3. Удаление строки в Pandas по условию

При помощи метода loc мы можем удалять строки по условию, к примеру мы хотим убрать из Dataframe те города, у которых площадь меньше 1 000 км2.

Так как мы будем применять математические условия, то сначала столбец «Площадь» мы должны перевести в формат int64:

city_df['Площадь'] = pd.to_numeric(city_df['Площадь'])
city_df['Площадь']
Далее при помощи метода loc мы передадим в Dataframe отфильтрованные строки, а именно те, которые удовлетворяют условию, что Площадь > 1 000 км2
city_df = city_df.loc[city_df['Площадь'] > 1000]
city_df
Как из Pandas удалить строку?



Спасибо за внимание. Дочитавшим до конца – традиционный бонус, наш ноутбук по этой статье.

P.S. Рекомендую еще ознакомиться с нашей статьей «Как из Pandas удалить столбец?».

0 comments:

Отправить комментарий

Спасибо за комментарий.