반응형

13-08 인덱스 변경 (reindex_like)

DataFrame.reindex_like(other, method=None, copy=True, limit=None, tolerance=None)

 

개요


reindex_like메서드는 other의 인덱스를 기준으로 self의 인덱스와 값을 적용하는 메서드입니다.

 

사용법


기본 사용법
※ 자세한 내용은 아래 예시를 참고 바랍니다.
self.reindex_like(other, method=None, copy=True, limit=None, tolerance=None)
method : {bfill / ffill / nearest이 결측치를 채울 규칙입니다.

ffill : 바로 전 값으로 결측치를 채웁니다.
bfill : 바로 뒤 값으로 결측치를 채웁니다.
nearest : 근처의 유효값으로 결측치를 채웁니다.
※ 결측치를 채울 때 값의 전/후 값을 기준으로하는것이 아닌 인덱스의 전/후 인덱스를 기준으로 합니다.

copy : 사본을 생성할지 여부입니다.
limit : method인수를 사용할 경우 몇개까지 변경할지 제한할 수 있습니다
tolerance : method인수를 사용할 때 index가 다를 경우 허용 범위 입니다.
│변경 전 인덱스 - 변경 후 인덱스│≤ tolerance 를 만족하게 method 적용 허용 범위를 정할 수 있습니다.
reindex 메서드의 tolerance인수와 사용이 동일하므로 참고 바랍니다.

반응형

 

예시


먼저 self가 될 객체와, other가 될 객체를 만들어보겠습니다.

col1  = ['col1','col3','col6']
idx1  = ['row0','row2','row3']
data1 = [['A','X','+'],['B','Y','-'],['C','Z','=']]
self = pd.DataFrame(data1, idx1, col1)
print(self)
>>
     col1 col3 col6
row0    A    X    +
row2    B    Y    -
row3    C    Z    =
col2  = ['col1','col2','col3','col4','col5','col6']
idx2  = ['row1','row2','row3']
data2 = [[1,2,3,4,5,6],[2,3,6,8,10,12],[3,6,9,12,15,18]]
other = pd.DataFrame(data2, idx2, col2)
print(other)
>>
      col1  col2  col3  col4  col5  col6
row1     1     2     3     4     5     6
row2     2     3     6     8    10    12
row3     3     6     9    12    15    18

기본적인 사용법
other의 인덱스를 기준으로 self의 인덱스와 값을 적용해보겠습니다. 일치하지 않는경우 NaN을 반환합니다.

print(self.reindex_like(other=other))
>>
     col1 col2 col3 col4 col5 col6 # 인덱스는 other기준으로 생성, 내용은 self에서 일치하는 인덱스 기준으로 생성됨.
row1  NaN  NaN  NaN  NaN  NaN  NaN
row2    B  NaN    Y  NaN  NaN    -
row3    C  NaN    Z  NaN  NaN    =


method와 limit의 사용
method를 이용하여 결측치를 채울 수 있습니다. method='ffill'이면 결측치를 앞의 값을 가져와서 채웁니다.

print(self.reindex_like(other=other,method='ffill'))
>>
     col1 col2 col3 col4 col5 col6
row1    A    A    X    X    X    +
row2    B    B    Y    Y    Y    -
row3    C    C    Z    Z    Z    =

method='bfill'이면 결측치를 뒤의 값을 가져와서 채웁니다.

print(self.reindex_like(other=other,method='bfill'))
>>
     col1 col2 col3 col4 col5 col6
row1    B    Y    Y    -    -    -
row2    B    Y    Y    -    -    -
row3    C    Z    Z    =    =    =

limit메서드를 이용할 경우 결측치를 채울 열의 수를 제한할 수 있습니다.

print(self.reindex_like(other=other,method='bfill',limit=1))
>>
     col1 col2 col3  col4 col5 col6 #변경할 열의 수를 1로 제한했기때문에 col4는 변경되지 않음.
row1    B    Y    Y   NaN    -    -
row2    B    Y    Y   NaN    -    -
row3    C    Z    Z   NaN    =    =
반응형

+ 최근 글