반응형

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
반응형

+ 최근 글