Pandas: как удалить строки, содержащие определенное значение


Вы можете использовать следующий синтаксис для удаления строк в кадре данных pandas, которые содержат определенное значение в определенном столбце:

#drop rows that contain specific 'value' in 'column_name'
df = df[df.column_name != value ]

Вы можете использовать следующий синтаксис для удаления строк в кадре данных pandas, которые содержат любое значение в определенном списке:

#define values
values = [value1, value2, value3, ...]

#drop rows that contain any value in the list
df = df[df.column_name.isin (values) == False ]

В следующих примерах показано, как использовать этот синтаксис на практике.

Пример 1. Удаление строк, содержащих определенное значение

В следующем коде показано, как удалить любые строки, содержащие определенное значение в одном столбце:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['Mavs', 'Lakers', 'Spurs', 'Cavs'],
 'name': ['Dirk', 'Kobe', 'Tim', 'Lebron'],
 'rebounds': [11, 7, 14, 7],
 'points': [26, 31, 22, 29]})

#view DataFrame
df

 team name rebounds points
0 Mavs Dirk 11 26
1 Lakers Kobe 7 31
2 Spurs Tim 14 22
3 Cavs Lebron 7 29

#drop any rows that have 7 in the rebounds column
df = df[df.rebounds != 7 ]

#view resulting DataFrame
df

 team name rebounds points
0 Mavs Dirk 11 26
2 Spurs Tim 14 22

Пример 2. Удаление строк, содержащих значения в списке

В следующем коде показано, как удалить любые строки в DataFrame, содержащие любое значение в списке:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['Mavs', 'Lakers', 'Spurs', 'Cavs'],
 'name': ['Dirk', 'Kobe', 'Tim', 'Lebron'],
 'rebounds': [11, 7, 14, 7],
 'points': [26, 31, 22, 29]})

#view DataFrame
df

 team name rebounds points
0 Mavs Dirk 11 26
1 Lakers Kobe 7 31
2 Spurs Tim 14 22
3 Cavs Lebron 7 29

#define list of values
values = [7, 11]

#drop any rows that have 7 or 11 in the rebounds column
df = df[df.rebounds.isin (values) == False ]

#view resulting DataFrame
df

 team name rebounds points
2 Spurs Tim 14 22

Пример 3. Удаление строк, содержащих определенные значения в нескольких столбцах

В следующем коде показано, как удалить любые строки в DataFrame, которые содержат определенное значение в одном из нескольких столбцов:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['Mavs', 'Lakers', 'Spurs', 'Cavs'],
 'name': ['Dirk', 'Kobe', 'Tim', 'Lebron'],
 'rebounds': [11, 7, 14, 7],
 'points': [26, 31, 22, 29]})

#view DataFrame
df

 team name rebounds points
0 Mavs Dirk 11 26
1 Lakers Kobe 7 31
2 Spurs Tim 14 22
3 Cavs Lebron 7 29

#drop any rows that have 11 in the rebounds column or 31 in the points column
df = df[(df.rebounds != 11 ) & (df.points != 31 )]

#view resulting DataFrame
df

team name rebounds points
2 Spurs Tim 14 22
3 Cavs Lebron 7 29

Дополнительные ресурсы

Как удалить строки по индексу в Pandas
Как удалить столбцы по индексу в Pandas
Как удалить строки, содержащие определенную строку в Pandas