Pandas представляет нам отличные инструменты для обработки данных, в том числе для удаления той информации, которая нам не нужна. В этой статье мы рассмотрим различные способы удаления строк из Dataframe Pandas.
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)
Способ 2. Удаление строки в Pandas по ее содержанию
Предположим, нам надо убрать строку с названием города «Казань», но мы не знаем его индекса и хотим ее удалить по названию. Для этого мы должны сначала изменить столбец с индексами и вместо цифровых значений задать данные из столбца «Город»:
city_df = city_df.set_index('Город')Теперь, когда в качестве индексов у нас названия городов, мы можем выполнить поставленную перед нами задачу:
city_df
city_df.drop(['Казань'],axis = 0)Мы можем удалить несколько строк по их содержанию в Pandas, перечислив их через запятую в квадратных скобках:
city_df.drop(['Казань','Владивосток'],axis = 0)
Способ 3. Удаление строки в Pandas по условию
При помощи метода loc мы можем удалять строки по условию, к примеру мы хотим убрать из Dataframe те города, у которых площадь меньше 1 000 км2.
Так как мы будем применять математические условия, то сначала столбец «Площадь» мы должны перевести в формат int64:
city_df['Площадь'] = pd.to_numeric(city_df['Площадь'])Далее при помощи метода loc мы передадим в Dataframe отфильтрованные строки, а именно те, которые удовлетворяют условию, что Площадь > 1 000 км2
city_df['Площадь']
city_df = city_df.loc[city_df['Площадь'] > 1000]
city_df
Спасибо за внимание. Дочитавшим до конца – традиционный бонус, наш ноутбук по этой статье.
P.S. Рекомендую еще ознакомиться с нашей статьей «Как из Pandas удалить столбец?».
0 comments:
Отправить комментарий
Спасибо за комментарий.