13-04 열을 인덱스로 설정 (set_index)
DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)
개요
set_index메서드는 기존의 열을 인덱스로 설정하는 메서드입니다.
사용법
기본 사용법
df.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)
keys : 인덱스로 설정할 열의 이름입니다. list형태로 설정할 경우 Multi Index로 설정됩니다.
drop : 인덱스로 설정한 열을 기존 열에서 제거할지 여부입니다. 기본값은 True로 열에서 제거됩니다.
append : 기존 인덱스를 유지하면서 새 인덱스를 추가할 지 여부입니다.
inplace : pandas 공통 인수로 원본을 대체할지 여부입니다.
verify_integrity : 추가하려는 인덱스에 중복값이 있을경우 오류를 띄울지 여부 입니다.
예시
먼저 5x4 짜리 DataFrame 객체를 만들겠습니다.
data={'col1':['A','A','A','B','B'],
'col2':['[1]','[2]','[3]','[1]','[2]'],
'col3':[2,5,3,4,1],
'col4':['X','X','Y','Z','Z']}
idx=['row1','row2','row3','row4','row5']
df = pd.DataFrame(data=data,index=idx)
print(df)
>>
col1 col2 col3 col4
row1 A [1] 2 X
row2 A [2] 5 X
row3 A [3] 3 Y
row4 B [1] 4 Z
row5 B [2] 1 Z
기본적인 사용법
keys로 인덱스가 될 열 이름을 지정할 수 있습니다.
# col1을 인덱스로 만들기
print(df.set_index(keys='col1'))
>>
col2 col3 col4
col1
A [1] 2 X
A [2] 5 X
A [3] 3 Y
B [1] 4 Z
B [2] 1 Z
keys에 list가 입력될 경우 Multi Index 형태로 설정이 됩니다.
print(df.set_index(keys=['col1','col2']))
>>
col3 col4
col1 col2
A [1] 2 X
[2] 5 X
[3] 3 Y
B [1] 4 Z
[2] 1 Z
append 인수의 사용
append인수를 True로 설정 할 경우 기존 Index를 유지하고 새 인덱스를 추가하게됩니다.
print(df.set_index(keys='col1',append=True))
>>
col2 col3 col4
col1
row1 A [1] 2 X
row2 A [2] 5 X
row3 A [3] 3 Y
row4 B [1] 4 Z
row5 B [2] 1 Z
drop 인수의 사용
drop 인수가 False일 경우 인덱스가 설정된 이후에도 해당 열이 유지됩니다.
기본값은 True로 keys에 설정된 열이 인덱스로 설정될 경우 열이 삭제됩니다.
print(df.set_index(keys='col1',drop=False))
>>
col1 col2 col3 col4
col1
A A [1] 2 X
A A [2] 5 X
A A [3] 3 Y
B B [1] 4 Z
B B [2] 1 Z
#col1 이 그대로 유지되어있는것을 확인할 수 있습니다.<br>
verify_integrity인수의 사용
verify_integrity인수의 기본값은 False로 인덱스에 중복된 값이 있더라도 출력합니다. 만약 True일 경우 중복값이 있다면 오류를 출력하게 됩니다.
# 기본값은 False로 중복을 허용
print(df.set_index(keys='col4'))
>>
col1 col2 col3
col4
X A [1] 2
X A [2] 5
Y A [3] 3
Z B [1] 4
Z B [2] 1
# True일 경우 인덱스에 중복값이 있다면 오류를 출력하게됩니다.<br>
print(df.set_index(keys='col4',verify_integrity=True))
>>
오류 발생
ValueError: Index has duplicate keys: Index(['X', 'Z'], dtype='object', name='col4')
'파이썬완전정복-Pandas DataFrame > 13. 축 및 레이블' 카테고리의 다른 글
Pandas DataFrame 13-07 인덱스 변경 (reindex) (0) | 2022.01.27 |
---|---|
Pandas DataFrame 13-06 접미사/접두사 (suffix / prefix) (0) | 2022.01.27 |
Pandas DataFrame 13-05 레이블명 변경 (set_axis) (0) | 2022.01.26 |
Pandas DataFrame 13-03 축 이름 변경 (rename_axis) (0) | 2022.01.26 |
Pandas DataFrame 13-01 행↔열 교환 (swapaxes) (0) | 2022.01.26 |