Pandas: bagaimana cara memfilter item “tidak mengandung”?


Anda dapat menggunakan metode berikut untuk melakukan filter “Tidak Berisi” di pandas DataFrame:

Metode 1: Filter baris yang tidak berisi string tertentu

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

Metode 2: Filter baris yang tidak berisi salah satu dari beberapa string tertentu

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

Contoh berikut menunjukkan cara menggunakan setiap metode dalam praktik dengan pandas DataFrame berikut:

 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

Contoh 1: Filter baris yang tidak berisi string tertentu

Kode berikut menunjukkan cara memfilter pandas DataFrame untuk baris yang kolom timnya tidak mengandung “ets” pada namanya:

 #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

Perhatikan bahwa DataFrame yang dihasilkan tidak berisi baris apa pun yang nilainya di kolom tim berisi “ets” pada namanya.

Secara khusus, tim berikut telah dikecualikan dari DataFrame:

  • Jaring
  • Roket
  • Nugget

Perhatikan bahwa masing-masing nama tim ini memiliki “ets” di namanya.

Contoh 2: Filter baris yang tidak berisi salah satu dari beberapa string tertentu

Kode berikut menunjukkan cara memfilter pandas DataFrame untuk baris yang kolom timnya tidak mengandung “ets” pada namanya:

 #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

Perhatikan bahwa DataFrame yang dihasilkan tidak berisi baris apa pun yang nilainya di kolom tim berisi “ets” atau “urs” pada namanya.

Catatan : | Operator berarti “ATAU” dalam panda.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan operasi pemfilteran umum lainnya di panda:

Cara memfilter Pandas DataFrame berdasarkan nilai kolom
Cara memfilter baris Pandas DataFrame berdasarkan tanggal
Cara memfilter Pandas DataFrame pada berbagai kondisi

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *