Pandas:두 열 사이의 문자열을 비교하는 방법


다음 기본 구문을 사용하여 Pandas DataFrame의 두 열 사이의 문자열을 비교할 수 있습니다.

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

str.strip() 함수는 각 문자열에서 공백을 제거하고 str.lower() 함수는 비교를 수행하기 전에 각 문자열을 소문자로 변환합니다.

다음 예에서는 실제로 이 구문을 사용하는 방법을 보여줍니다.

예: Pandas의 두 열 간 문자열 비교

농구 팀 이름이 포함된 두 개의 열을 포함하는 다음과 같은 pandas DataFrame이 있다고 가정해 보겠습니다.

 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 를 반환합니다.

그러나 비교를 수행하기 전에 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를 반환합니다. 공백을 제거하고 문자열을 소문자로 변환한 후에도 이러한 문자열은 동일하지 않기 때문입니다.

추가 리소스

다음 튜토리얼에서는 Pandas에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

Pandas: 문자열에서 특정 문자를 제거하는 방법
Pandas:문자열에 여러 하위 문자열이 포함되어 있는지 확인
Pandas: 빈 문자열을 NaN으로 바꾸는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다