Python/Pandas

[Pandas] 파이썬 데이터프레임 행/열 밀기(옮기기) 방법 정리 : df.shift()

jimmy_AI 2022. 6. 21. 20:23
반응형

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)