13-09 인덱스 리셋 (reset_index)
DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill='')
개요
reset_index메서드는 설정 인덱스를 제거하고 기본 인덱스(0,1,2, ... , n)으로 변경하는 메서드 입니다.
사용법
기본 사용법
※ 자세한 내용은 아래 예시를 참고 바랍니다.
self.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill='')
level : Multi Index의 경우 제거할 인덱스의 레벨을 설정할수 있습니다. 기본적으로 모든 레벨입니다.
drop : 제거한 인덱스를 열에 추가할지 여부입니다. 기본값은 False로 제거된 인덱스는 열로 변환됩니다.
inplace : pandas 공통 인수로, 원본을 변경할지 여부 입니다.
col_level / col_fill : Multi Index의 경우 제거된 인덱스를 열에 추가할 때 레벨과 열의 이름을 설정할 수 있습니다.
col_level을 통해 레벨을 설정하고, col_fill을통해 해당 열의 이름을 정합니다.
예시
먼저 기본적인 사용법 예시를 위해 3x2 짜리 객체를 생성하겠습니다.
df = pd.DataFrame([[1,2],[3,4],[5,6]],['row1','row2','row3'],['col1','col2'])
print(df)
>>
col1 col2
row1 1 2
row2 3 4
row3 5 6
기본적인 사용법(+drop, inplace)
기본적으로 아무 인수 없이 사용하게 되면, 모든 레벨에 대해 인덱스가 제거되며, 열에 추가됩니다.
print(df.reset_index())
>>
index col1 col2 # index라는 열이 생성되고 기존 인덱스가 기본 인덱스로 변경됨
0 row1 1 2
1 row2 3 4
2 row3 5 6
drop = True인 경우 열이 밖으로 꺼내지는게 아니라 완전히 삭제됩니다.
print(df.reset_index(drop=True))
>>
col1 col2
0 1 2
1 3 4
2 5 6
inplace=True인 경우 원본이 변경되게 됩니다.
df.reset_index(inplace=True)
print(df)
>>
index col1 col2
0 row1 1 2
1 row2 3 4
2 row3 5 6
Multi Index 예시
Multi Index의 예시를 위하여 4x4짜리 Multi Index를 하나 생성하겠습니다.
idx = [['IDX1','IDX1','IDX2','IDX2'],['row1','row2','row3','row4']]
col = [['COL1','COL1','COL2','COL2'],['val1','val2','val3','val4']]
data = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
df2 = pd.DataFrame(data,idx,col)
print(df2)
>>
COL1 COL2
val1 val2 val3 val4
IDX1 row1 1 2 3 4
row2 5 6 7 8
IDX2 row3 9 10 11 12
row4 13 14 15 16
기본적인 사용법(+level)
Multi Index의 경우 level을 설정해줌으로서 제거할 인덱스의 레벨을 선택할 수 있습니다.
level을 입력하지 않은 경우 모든 index에 대해서 수행됩니다.
print(df2.reset_index())
>>
level_0 level_1 COL1 COL2
val1 val2 val3 val4
0 IDX1 row1 1 2 3 4
1 IDX1 row2 5 6 7 8
2 IDX2 row3 9 10 11 12
3 IDX2 row4 13 14 15 16
level=0인 경우
print(df2.reset_index(level=0))
>>
level_0 COL1 COL2
val1 val2 val3 val4
row1 IDX1 1 2 3 4
row2 IDX1 5 6 7 8
row3 IDX2 9 10 11 12
row4 IDX2 13 14 15 16
level=1인 경우
print(df2.reset_index(level=1))
>>
level_1 COL1 COL2
val1 val2 val3 val4
IDX1 row1 1 2 3 4
IDX1 row2 5 6 7 8
IDX2 row3 9 10 11 12
IDX2 row4 13 14 15 16
col_fill / col_level의 사용
col_fill을 이용하여 열로 변경되는 인덱스의 열 이름을 설정할 수 있습니다. COL0으로 설정해보겠습니다.
print(df2.reset_index(level=1,col_fill='COL0'))
>>
level_1 COL1 COL2
COL0 val1 val2 val3 val4 #COL0이 열 이름으로 생성됨.
IDX1 row1 1 2 3 4
IDX1 row2 5 6 7 8
IDX2 row3 9 10 11 12
IDX2 row4 13 14 15 16
col_level을 이용해 열 이름의 레벨을 정할 수 있습니다. COL0을 다른 열이름에 맞게 LEVEL을 변경해보겠습니다.
print(df2.reset_index(level=1,col_fill='COL0',col_level=1))
>>
COL0 COL1 COL2
level_1 val1 val2 val3 val4
IDX1 row1 1 2 3 4
IDX1 row2 5 6 7 8
IDX2 row3 9 10 11 12
IDX2 row4 13 14 15 16
'파이썬완전정복-Pandas DataFrame > 13. 축 및 레이블' 카테고리의 다른 글
Pandas DataFrame 13-10 멀티인덱스 레벨 변경 (reorder_levels) (0) | 2022.01.27 |
---|---|
Pandas DataFrame 13-08 인덱스 변경 (reindex_like) (0) | 2022.01.27 |
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 |