Как удалить строки в Pandas DataFrame на основе условия


Мы можем использовать следующий синтаксис для удаления строк в pandas DataFrame на основе условия:

Метод 1: удаление строк на основе одного условия

df = df[df.col1 > 8]

Метод 2: удаление строк на основе нескольких условий

df = df[(df.col1 > 8) & (df.col2 != 'A')]

Примечание.Мы также можем использовать функцию drop() для удаления строк из DataFrame, но эта функция оказалась намного медленнее, чем простое присвоение DataFrame отфильтрованной версии самого себя.

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

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
 'pos': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'],
 'assists': [5, 7, 7, 9, 12, 9, 9, 4],
 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
df

 team pos assists rebounds
0 A G 5 11
1 A G 7 8
2 A F 7 10
3 A F 9 6
4 B G 12 6
5 B G 9 5
6 B F 9 9
7 B F 4 12

Метод 1: удаление строк на основе одного условия

В следующем коде показано, как удалять строки в DataFrame на основе одного условия:

#drop rows where value in 'assists' column is less than or equal to 8
df = df[df.assists > 8] 

#view updated DataFrame
df

 team pos assists rebounds
3 A F 9 6
4 B G 12 6
5 B G 9 5
6 B F 9 9

Любая строка, которая имела значение меньше или равное 8 в столбце «помощь», была удалена из DataFrame.

Метод 2: удаление строк на основе нескольких условий

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

#only keep rows where 'assists' is greater than 8 and rebounds is greater than 5
df = df[(df.assists > 8) & (df.rebounds > 5)]

#view updated DataFrame
df

 team pos assists rebounds
3 A F 9 6
4 B G 12 6
5 B G 9 5
6 B F 9 9

Единственные строки, которые мы сохранили в DataFrame, были те, в которых значение помощи было больше 8, а значение подбора больше 5.

Обратите внимание, что мы также можем использовать | оператор для применения фильтра «или»:

#only keep rows where 'assists' is greater than 8 or rebounds is greater than 10
df = df[(df.assists > 8) | (df.rebounds > 10)]

#view updated DataFrame
df

 team pos assists rebounds
0 A G 5 11
3 A F 9 6
4 B G 12 6
5 B G 9 5
6 B F 9 9
7 B F 4 12

Единственные строки, которые мы сохранили в DataFrame, были те, в которых значение помощи было больше 8 или значение подбора было больше 10.

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

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

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.