パンダ: 2 つの列間の文字列を比較する方法
次の基本構文を使用して、pandas DataFrame の 2 つの列間の文字列を比較できます。
df[' col1 ']. str . strip (). str . lower () == df[' col2 ']. str . strip (). str . lower ()
str.strip()関数は各文字列からスペースを削除し、 str. lower()関数は比較を実行する前に各文字列を小文字に変換します。
次の例は、この構文を実際に使用する方法を示しています。
例: Pandas の 2 つの列間の文字列を比較する
バスケットボール チーム名を含む 2 つの列を含む次のパンダ データフレームがあるとします。
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
一部のチーム名にはランダムな場所にスペースが含まれており、一部のチーム名は大文字になっていることに注意してください。
各行の文字列を比較して、各行のチーム名が等しいかどうかを確認したいとします。
文字列を比較するときに==記号のみを使用すると、パンダは大文字と小文字が同じで、まったく同じ位置にスペースが含まれている場合にのみTrueを返します。
#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
文字列に同じ大文字と小文字と空白の位置が含まれる唯一の行であるため、 Trueを返すのは 1 行だけであることに注意してください。
ただし、比較を実行する前に、 str.strip()関数を使用して各文字列からスペースを削除し、 str. lower()関数を使用して各文字列を小文字に変換することができます。
#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
これで、チーム名が「Hawks」と「Jazz」の行を除くすべての行がTrueを返します。これは、スペースを削除して文字列を小文字に変換した後でも、これらの文字列は等しくないためです。
追加リソース
次のチュートリアルでは、パンダで他の一般的なタスクを実行する方法を説明します。
パンダ: 文字列から特定の文字を削除する方法
パンダ: 文字列に複数の部分文字列が含まれているかどうかを確認します
パンダ: 空の文字列を NaN に置き換える方法