Pandas: як відфільтрувати елементи «не містить»?


Ви можете використати такі методи, щоб виконати фільтр «Не містить» у pandas DataFrame:

Спосіб 1. Відфільтруйте рядки, які не містять певного рядка

 filtered_df = df[df[' my_column ']. str . contains (' some_string ') == False ]

Спосіб 2. Відфільтруйте рядки, які не містять один із кількох конкретних рядків

 filtered_df = df[df[' my_column ']. str . contains (' string1|string2|string3 ') == False ]

Наступні приклади показують, як використовувати кожен метод на практиці з такими pandas DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['Nets', 'Rockets', 'Mavs', 'Spurs', 'Kings', 'Nuggets'],
                   ' points ': [18, 22, 19, 14, 14, 11],
                   ' assists ': [5, 7, 7, 9, 12, 9],
                   ' rebounds ': [11, 8, 10, 6, 6, 5]})

#view DataFrame
print (df)

      team points assists rebounds
0 Nets 18 5 11
1 Rockets 22 7 8
2 Mavs 19 7 10
3 Spurs 14 9 6
4 Kings 14 12 6
5 Nuggets 11 9 5

Приклад 1: фільтрування рядків, які не містять певного рядка

Наступний код показує, як відфільтрувати pandas DataFrame для рядків, стовпець команди яких не містить «ets» у назві:

 #filter for rows that do not contain 'ets' in the 'team' column
filtered_df = df[df[' team ']. str . contains (' ets ') == False ]

#view filtered DataFrame
print (filtered_df)

    team points assists rebounds
2 Mavs 19 7 10
3 Spurs 14 9 6
4 Kings 14 12 6

Зауважте, що результуючий DataFrame не містить жодних рядків, значення яких у стовпці team містить “ets” у назві.

Зокрема, з DataFrame виключено такі команди:

  • Сітки
  • Ракети
  • нагетси

Зауважте, що кожна з цих назв команд мала «ets» у назві.

Приклад 2: відфільтрувати рядки, які не містять один із кількох конкретних рядків

Наступний код показує, як відфільтрувати pandas DataFrame для рядків, стовпець команди яких не містить «ets» у назві:

 #filter for rows that do not contain 'ets' or 'urs' in the 'team' column
filtered_df = df[df[' team ']. str . contains (' ets|urs ') == False ]

#view filtered DataFrame
print (filtered_df)

    team points assists rebounds
2 Mavs 19 7 10
4 Kings 14 12 6

Зауважте, що отриманий DataFrame не містить жодних рядків, значення яких у стовпці team містить «ets» або «urs» в назві.

Примітка : | Оператор означає «АБО» в пандах.

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції фільтрації в pandas:

Як відфільтрувати Pandas DataFrame за значеннями стовпців
Як фільтрувати рядки Pandas DataFrame за датою
Як відфільтрувати Pandas DataFrame за кількома умовами

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *