Pandas: cara membandingkan string antara dua kolom


Anda dapat menggunakan sintaks dasar berikut untuk membandingkan string antara dua kolom di pandas DataFrame:

 df[' col1 ']. str . strip (). str . lower () == df[' col2 ']. str . strip (). str . lower ()

Fungsi str.strip() menghilangkan spasi dari setiap string dan fungsi str.lower() mengubah setiap string menjadi huruf kecil sebelum melakukan perbandingan.

Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.

Contoh: Bandingkan String Antara Dua Kolom di Pandas

Katakanlah kita memiliki panda DataFrame berikut yang berisi dua kolom dengan nama tim bola basket:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team1 ': ['Mavs', 'Hawks', 'Nets', 'Hornets', 'Lakers'],
                   ' team2 ': ['Mavs', 'Jazz', 'Nets', 'Hornets', 'LAKERS']})

#view DataFrame
print (df)

     team1 team2
0 Mavs Mavs 
1 Hawks Jazz
2 Nets Nets
3 Hornets Hornets 
4 Lakers LAKERS

Perhatikan bahwa beberapa nama tim mengandung spasi di tempat acak dan beberapa nama tim menggunakan huruf kapital.

Katakanlah kita ingin membandingkan string di setiap baris untuk melihat apakah nama tim sama di setiap baris.

Jika kita hanya menggunakan simbol == saat membandingkan string, panda hanya akan mengembalikan True jika berada dalam case yang sama dan berisi spasi pada posisi yang persis sama:

 #create new column that tests if strings in team columns are equal
df[' equal '] = df[' team1 '] == df[' team2 ']

#view updated DataFrame
print (df)

     team1 team2 equal
0 Mavs Mavs False
1 Hawks Jazz False
2 Nets Nets True
3 Hornets Hornets False
4 Lakers LAKERS False

Perhatikan bahwa hanya satu baris yang mengembalikan True , karena ini adalah satu-satunya baris yang stringnya berisi posisi huruf besar dan spasi yang sama.

Namun, kita dapat menggunakan fungsi str.strip() untuk menghilangkan spasi dari setiap string dan fungsi str.lower() untuk mengubah setiap string menjadi huruf kecil sebelum melakukan perbandingan:

 #remove whitespace and convert each string to lowercase, then compare strings
df[' equal '] = df[' team1 ']. str . strip (). str . lower () == df[' team2 ']. str . strip (). str . lower ()

#view updated DataFrame
print (df)

     team1 team2 equal
0 Mavs Mavs True
1 Hawks Jazz False
2 Nets Nets True
3 Hornets Hornets True
4 Lakers LAKERS True

Sekarang setiap baris mengembalikan True kecuali baris yang nama timnya adalah “Hawks” dan “Jazz”, karena bahkan setelah menghapus spasi dan mengubah string menjadi huruf kecil, string ini tidak sama.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di panda:

Pandas: Cara menghapus karakter tertentu dari string
Pandas: Periksa apakah string berisi banyak substring
Pandas: Cara mengganti string kosong dengan NaN

Tambahkan komentar

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