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 = =
'파이썬완전정복-Pandas DataFrame > 13. 축 및 레이블' 카테고리의 다른 글
Pandas DataFrame 13-10 멀티인덱스 레벨 변경 (reorder_levels) (0) | 2022.01.27 |
---|---|
Pandas DataFrame 13-09 인덱스 리셋 (reset_index) (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 |