반응형

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')

 

반응형

+ 최근 글