Pandalar: iki sütun arasındaki dizeler nasıl karşılaştırılır
Bir pandas DataFrame’deki iki sütun arasındaki dizeleri karşılaştırmak için aşağıdaki temel sözdizimini kullanabilirsiniz:
df[' col1 ']. str . strip (). str . lower () == df[' col2 ']. str . strip (). str . lower ()
str.strip() işlevi her dizedeki boşlukları kaldırır ve str.lower() işlevi, karşılaştırmayı gerçekleştirmeden önce her dizeyi küçük harfe dönüştürür.
Aşağıdaki örnek, bu sözdiziminin pratikte nasıl kullanılacağını gösterir.
Örnek: Pandalarda İki Sütun Arasındaki Dizeleri Karşılaştırma
Diyelim ki basketbol takımı adlarını içeren iki sütun içeren aşağıdaki pandalar DataFrame’e sahibiz:
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
Bazı takım adlarının rastgele yerlerde boşluk içerdiğini ve bazı takım adlarının büyük harfle yazıldığını unutmayın.
Her satırdaki takım adlarının eşit olup olmadığını görmek için her satırdaki dizeleri karşılaştırmak istediğimizi varsayalım.
Dizeleri karşılaştırırken yalnızca == sembolünü kullanırsak, pandalar yalnızca aynı durumda olmaları ve tamamen aynı konumlarda boşluklar içermeleri durumunda True değerini döndürür:
#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
Yalnızca bir satırın True döndürdüğünü unutmayın; çünkü bu, dizelerin aynı büyük/küçük harf ve boşluk konumlarını içerdiği tek satırdır.
Ancak, karşılaştırmayı gerçekleştirmeden önce her dizedeki boşlukları kaldırmak için str.strip() işlevini ve her dizeyi küçük harfe dönüştürmek için str.lower() işlevini kullanabiliriz:
#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
Artık takım adlarının “Hawks” ve “Jazz” olduğu satır dışında her satır True değerini döndürür, çünkü boşluklar kaldırıldıktan ve dizeler küçük harfe dönüştürüldükten sonra bile bu dizeler eşit değildir.
Ek kaynaklar
Aşağıdaki eğitimlerde pandalarda diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:
Pandalar: Belirli karakterler dizelerden nasıl kaldırılır
Pandalar: Dizenin birden fazla alt dize içerip içermediğini kontrol edin
Pandalar: Boş dizeler NaN ile nasıl değiştirilir?