Pandas: periksa apakah string berisi banyak substring


Anda dapat menggunakan metode berikut untuk memeriksa apakah string dalam pandas DataFrame berisi beberapa substring:

Metode 1: Periksa apakah string berisi salah satu dari beberapa substring

 df[' string_column ']. str . contains (' | ' .join ([' string1 ',' string2 ']))

Metode 2: Periksa apakah string berisi beberapa substring

 df[' string_column ']. str . contains ( r'^(?=.*string1)(?=.*string2)' )

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

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['Good East Team', 'Good West Team', 'Great East Team',
                             'Great West Team', 'Bad East Team', 'Bad West Team'],
                   ' points ': [93, 99, 105, 110, 85, 88]})

#view DataFrame
print (df)

              team points
0 Good East Team 93
1 Good West Team 99
2 Great East Team 105
3 Great West Team 110
4 Bad East Team 85
5 Bad West Team 88

Contoh 1: Periksa apakah string berisi salah satu dari beberapa substring

Kita dapat menggunakan sintaks berikut untuk memeriksa apakah setiap string di kolom tim berisi substring “Baik” atau “Apakah”:

 #create new column that checks if each team name contains 'Good' or 'East'
df[' good_or_east '] = df[' team ']. str . contains (' | ' .join ([' Good ',' East ']))

#view updated DataFrame
print (df)

              team points good_or_east
0 Good East Team 93 True
1 Good West Team 99 True
2 Great East Team 105 True
3 Great West Team 110 False
4 Bad East Team 85 True
5 Bad West Team 88 False

Kolom good_or_east yang baru mengembalikan nilai berikut:

  • Benar jika tim berisi “Baik” atau “Apakah”
  • Salah jika tim tidak berisi “Baik” atau “Is”

Catatan : | Operator berarti “atau” dalam panda.

Contoh 2 : Periksa apakah string berisi beberapa substring

Kita dapat menggunakan sintaks berikut untuk memeriksa apakah setiap string di kolom tim berisi substring “Baik” dan “Apakah”:

 #create new column that checks if each team name contains 'Good' and 'East'
df[' good_and_east '] = df[' team ']. str . contains ( r'^(?=.*Good)(?=.*East)' )

#view updated DataFrame
print (df)

              team points good_and_east
0 Good East Team 93 True
1 Good West Team 99 False
2 Great East Team 105 False
3 Great West Team 110 False
4 Bad East Team 85 False
5 Bad West Team 88 False

Kolom baru good_and_east mengembalikan nilai berikut:

  • Benar jika tim berisi “Baik” dan “Apakah”
  • Salah jika tim tidak mengandung “Baik” dan “Apakah”

Perhatikan bahwa hanya satu nilai True yang dikembalikan karena hanya ada satu nama tim yang berisi substring “Baik” dan substring “Timur”.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di panda:

Pandas: tambahkan kolom dari satu DataFrame ke DataFrame lainnya
Pandas: Dapatkan baris yang tidak ada di DataFrame lain
Pandas: cara memeriksa apakah beberapa kolom sama

Tambahkan komentar

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