반응형

09-07. 중복행 제거 (drop_duplicates)

DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)

 

개요


drop_duplicates메서드는 내용이 중복되는 행을 제거하는 메서드입니다.

 

사용법


기본 사용법
df.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)
subset : 중복값을 검사할 열 입니다. 기본적으로 모든 열을 검사합니다.
keep : {first / last} 중복제거를할때 남길 행입니다. first면 첫값을 남기고 last면 마지막 값을 남깁니다.
inplace : 원본을 변경할지의 여부입니다.
ignore_index : 원래 index를 무시할지 여부입니다. True일 경우 0,1,2, ... , n으로 부여됩니다.

반응형

 

예시


먼저, 아래와 같이 간단한 5x3 객체를 만들어 보겠습니다.

col = ['col1','col2','col3']
data = [['A','x','-'],['A','x','-'],['B','x','앞'],['B','y','-'],['B','y','뒤']]
df = pd.DataFrame(data=data, columns=col)
print(df)
>>
  col1 col2 col3
0    A    x    -
1    A    x    -
2    B    x    앞
3    B    y    -
4    B    y    뒤

기본적인 사용법
subset에 입력된 컬럼명을 기준으로 해당 컬럼의 중복값을 검사하게됩니다.
subset이 따로 입력되지 않는 경우는 모든 열에대해 값이 중복인 행을 제거합니다.

print(df.drop_duplicates())
>>
  col1 col2 col3 # 모든 요소가 중복인 0행과 1행중 1행이 삭제됨(처음값 남기는게 기본)
0    A    x    -
2    B    x    앞
3    B    y    -
4    B    y    뒤

subset에 특정 컬럼명만 입력할 경우, 해당 열에대해서만 중복값 검사를 수행합니다.

print(df.drop_duplicates(subset='col2'))
>>
  col1 col2 col3 # col2에서 x와 y에대해서 중복값들 제거
0    A    x    -
3    B    y    -

subset에 리스트를 입력할 경우 해당 열들에대해서 모두 중복인 경우만 삭제를 진행합니다.

print(df.drop_duplicates(subset=['col1','col2']))
>>
  col1 col2 col3
0    A    x    -
2    B    x    앞
3    B    y    -


keep인수를 통해 남길 행 선택
keep인수를 통해서 중복값을 제거하고 남길 행을 선택할 수 있습니다.
keep='first'인 경우 처음 값을 남깁니다. (기본값)

print(df.drop_duplicates(subset='col1',keep='first'))
>>
  col1 col2 col3
0    A    x    -
2    B    x    앞

keep='last'인 경우 마지막 값을 남깁니다.

print(df.drop_duplicates(subset='col1',keep='last'))
>>
  col1 col2 col3
1    A    x    -
4    B    y    뒤

추가로 ignore_index=True로 할 경우 결과값의 인덱스를 0, 1, 2, ... , n으로 설정합니다.

print(df.drop_duplicates(subset='col1',keep='last',ignore_index=True))
>>
  col1 col2 col3 #인덱스가 0, 4에서 0, 1로 정리됩
0    A    x    -
1    B    y    뒤


inplace 인수의 사용
Pandas 공통사항으로 inplace인수를 사용할 경우 원본에 변경이 적용됩니다.

df.drop_duplicates(subset='col3',inplace=True)
print(df)
>>
  col1 col2 col3
0    A    x    -
2    B    x    앞
4    B    y    뒤
반응형

+ 최근 글