본문 바로가기

[Python] 데이터프레임 중복 제거 :: drop_duplicates

Python/Pandas 2020. 11. 16.

반응형

데이터프레임에서 중복되는 행을 제거하고 고유한 값만 남기고 싶을 때 Pandas의 drop_duplicates를 활용하면 된다.

 

import pandas as pd

# 중복제거
df.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)

 

예시데이터

df = pd.DataFrame({'Num':[1, 2, 1, 2, 2, 3], 
                   'Alphabet':['a', 'b', 'a', 'b', 'a', 'b']})
df

중복이 있는 예시데이터를 생성하였다.

 

 

1. 중복제거

df.drop_duplicates()

아무것도 지정하지 않고 그냥 drop_duplicates를 할 경우 모든 열(column)을 기준으로 중복을 제거한다.

 

예시데이터에서 ['Num', 'Alphabet']을 쌍으로 취급하여 중복을 제거하였기에 각 열에는 여전히 중복되는 데이터가 남아있다.

 

 

2. 열 지정하여 중복제거

df.drop_duplicates(['col'])

파라미터로 열을 지정해주면 지정된 열을 기준으로 중복을 제거해준다.

 

 

 

3. 남길 대상 지정

# 첫 번째만 남기기
ex.drop_duplicates(['col'], keep = 'first')

# 마지막만 남기기
ex.drop_duplicates(['col'], keep = 'first')

# 모두 제거
ex.drop_duplicates(['col'], keep = False)

중복되는 데이터 중에서 어떤 행을 남길지 지정할 수 있다.

 

 

1) 첫 번째만 남기기

: 인덱스 기준으로 가장 앞에 있는 행만 남음

 

2) 마지막만 남기기

: 인덱스 기준으로 가장 마지막에 있는 행만 남음

 

3) 모두 제거

: 중복되는 데이터가 있는 모든 행 제거

 

 

4. 인덱스 재설정(Reset Index)

ex.drop_duplicates(['col'], ignore_index = True)

기존의 인덱스를 따랐기 때문에 중복을 제거한 후에는 사라진 행의 인덱스가 비게 된다.

이때 ignore_index를 이용하면 인덱스를 재설정해줄 수 있다.

 

 

 

 

Reference

 

 

 

728x90

Comments