Python 판다스 행, 열의 값 밀어내기 : shift 함수 사용법
파이썬의 판다스 모듈에서 데이터프레임 내의 값들을 행 혹은 열을 기준으로
원하는 칸 만큼 밀어내는 shift 함수에 대하여 다루어보도록 하겠습니다.
여기서는 아래와 같은 데이터프레임 df를 예시로 설명을 진행하여 이해를 돕도록 하겠습니다.
import pandas as pd
a = {'A' : [1111, 2222, 3333, 4444, 5555], 'B' : ['AAAA', 'BBBB', 'CCCC','DDDD', 'EEEE']}
df = pd.DataFrame(a)
df
전체 n칸씩 아래(혹은 위)방향으로 밀기 : df.shift(n)
기본적인 shift 메소드의 사용법으로, df.shift(n) 형태로 실행 시에
모든 열의 행들이 n칸씩 아래로 민 결과가 반환됩니다.
df.shift(1)
기본적으로 밀려난 자리들은 결측치인 NaN 값으로 채워지게 됩니다.
반대로, n에 음수를 넣은 경우는 전체 행들을 n칸씩 올린 결과가 반환됩니다.
df.shift(-2)
전체 n칸씩 오른쪽(혹은 왼쪽)방향으로 밀기 : df.shift(n, axis = 1)
shift 메소드 내에 axis 인자를 1 혹은 'columns'로 지정 시,
행 방향이 아니라 열 방향인 우측/좌측으로 값들을 밀어낼 수 있습니다.
참고로, n이 양수일 때 오른쪽 방향을 기준으로 값들이 이동합니다.
df.shift(1, axis = 1)
특정 열만 n칸 밀기 : df[열 이름].shift(n)
만일, 데이터프레임 전체가 아니라 특정 열에 대해서만 아래쪽 혹은 위쪽 방향으로
값들을 옮기고 싶다면, df[열 이름]으로 특정 열만 가져와서 shift를 적용해주시면 됩니다.
B열의 값들을 1칸씩 내려 새로운 열로 지정한 예시는 다음과 같습니다.
df['B_1'] = df['B'].shift(1)
df
특정 행만 n칸 밀기 : df.loc[인덱스].shift(n)
바로 위의 예시와는 반대로, 특정 행에 대해서만 우측 혹은 좌측 방향으로 n칸씩
값들을 옮기고 싶다면, df.loc[인덱스] 형태로 해당 행을 가져와서 shift를 적용해주시면 됩니다.
3번 인덱스 행을 가져와 오른쪽으로 1칸 옮긴 예시는 아래와 같습니다.
df.loc[3] = df.loc[3].shift(1)
df
결측치가 아닌 다른 값으로 밀려난 값들 채우기 : fill_value 인자 지정
만일, shift 함수의 결과로 인하여 밀려난 자리들의 빈 값 위치들을 NaN이 아닌 다른 값들로
채우고 싶은 경우에는 fill_value 인자에 원하는 값을 지정해주시면 됩니다.
df.shift(1, fill_value = 0)
'Python > Pandas' 카테고리의 다른 글
[Pandas] 파이썬 데이터프레임 행/열 순서(위치) 변경 방법 정리 (0) | 2022.07.10 |
---|---|
[Pandas] 파이썬 데이터프레임에서 SQL 쿼리로 데이터 가져오기(feat. pandasql 모듈의 sqldf 함수) (0) | 2022.06.19 |
[Pandas] 파이썬 데이터프레임 최대/최소값 위치 인덱스, 행 탐색 : idxmax(), idxmin() (0) | 2022.06.12 |