DataFrame 중복제거 :: drop_duplicates
df.drop_duplicates(subset = None, keep = False, inplace = False, ignore_index = False )
- DF.drop_duplicates
- 데이터 프레임(Data Frame)에서 중복값을 제거하고 고유한 값을 남김
- option
- subset : 열 레이블 또는 레이블 시퀀스
- keep : 유지할 행
- 'first' : 중복되는 데이터 중 첫 번째 행 유지
- 'last' : 중복되는 데이터 중 마지막 번째 행 유지
- False : 중복되는 데이터 전체 삭제
- inplace : 대체 여부
- ignore_index : 인덱스 재설정
import pandas as pd
df = pd.DataFrame({
'Name' : ['김','강','권','김','남','강'],
'Number' : [2, 1, 3, 2, 2, 1]
})
df
|
Name |
Number |
0 |
김 |
2 |
1 |
강 |
1 |
2 |
권 |
3 |
3 |
김 |
2 |
4 |
남 |
2 |
5 |
강 |
1 |
1. 중복제거(Default)
df.drop_duplicates()
|
Name |
Number |
0 |
김 |
2 |
1 |
강 |
1 |
2 |
권 |
3 |
4 |
남 |
2 |
→ 모든 열(columns)을 기준으로 중복 제거
2. 열을 지정하여 중복제거(subset)
df.drop_duplicates(subset=['Name'])
|
Name |
Number |
0 |
김 |
2 |
1 |
강 |
1 |
2 |
권 |
3 |
4 |
남 |
2 |
→ 'Name' column을 지정하여 중복제거
3. 중복된 데이터를 제거하되 유지할 행 선택(keep)
3-1. 중복되는 데이터 중 첫 번째 행 유지
df.drop_duplicates(subset=['Name'],keep = 'first')
|
Name |
Number |
0 |
김 |
2 |
1 |
강 |
1 |
2 |
권 |
3 |
4 |
남 |
2 |
- 중복되는 데이터 'Name'중 첫 번째 행만 유지됨
- Name : 김 Number : 2
- Name : 강 Number : 1
3-2. 중복되는 데이터 중 마지막 행 유지
df.drop_duplicates(subset=['Name'],keep = 'last')
|
Name |
Number |
2 |
권 |
3 |
3 |
김 |
2 |
4 |
남 |
2 |
5 |
강 |
1 |
- 중복되는 데이터 'Name'중 마지막 행만 유지됨
- Name : 김 Number : 2
- Name : 강 Number : 1
3-3. 중복되는 데이터 전체 제거
df.drop_duplicates(subset=['Name'],keep = False)
4. 대체 여부(inplace)
df.drop_duplicates(subset=['Name'],keep = False)
df.drop_duplicates(subset=['Name'],keep = False,inplace = False)
df
|
Name |
Number |
0 |
김 |
2 |
1 |
강 |
1 |
2 |
권 |
3 |
3 |
김 |
2 |
4 |
남 |
2 |
5 |
강 |
1 |
→ df가 변경되지 않음
df.drop_duplicates(subset=['Name'],keep = False,inplace = True)
df
→ df가 변경됨
5. 인덱스 재설정(ignore_index)
df.drop_duplicates(subset=['Name'],keep = False,inplace = False, ignore_index = True)
df.drop_duplicates(subset=['Name'],keep = False,inplace = False, ignore_index = False)