Pandas에서 null이 아닌 값을 뒤로 전파하는 방법
Pandas DataFrame에 있는 결측치(NaN)를 뒤의 값으로 채우고 싶다면, fillna() 메서드의 method 매개변수에 'bfill'(backward fill) 값을 지정하면 됩니다.
fillna(method='bfill')
참고: 최신 버전의 Pandas(2.x 이상)에서는 method 매개변수가 더 이상 권장되지 않으며(deprecated), 대신 bfill() 메서드를 직접 사용하는 것이 좋습니다.
dataFrame.bfill() # fillna(method='bfill')와 동일한 결과
예제 데이터 준비
아래 예제에서는 일부 값이 NaN으로 비어 있는 CSV 파일(SalesData.csv)을 사용합니다. Microsoft Excel로 열었을 때 다음과 같은 데이터가 들어 있다고 가정해 보겠습니다.

1. 필요한 라이브러리 임포트
import pandas as pd
2. CSV 파일을 DataFrame으로 불러오기
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesData.csv")
전체 예제 코드
다음은 NaN 값을 뒤로 전파(backward fill)하여 채우는 전체 코드입니다.
import pandas as pd
# CSV 파일을 Pandas DataFrame으로 불러오기
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesData.csv")
print("DataFrame...\n", dataFrame)
# null이 아닌 값을 뒤로 전파하여 결측치 채우기
res = dataFrame.fillna(method='bfill')
print("\nDataFrame after backward fill...\n", res)
실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
DataFrame...
Car Reg_Price Units
0 BMW 2500 100.0
1 Lexus 3500 NaN
2 Audi 2500 120.0
3 Jaguar 2000 NaN
4 Mustang 2500 110.0
DataFrame after backward fill...
Car Reg_Price Units
0 BMW 2500 100.0
1 Lexus 3500 120.0
2 Audi 2500 120.0
3 Jaguar 2000 110.0
4 Mustang 2500 110.0
결과 해석
출력 결과를 보면 bfill이 어떻게 동작하는지 명확히 알 수 있습니다.
- 인덱스 1(Lexus)의 Units 값이 NaN이었지만, 바로 뒤 행인 인덱스 2(Audi)의 값 120.0으로 채워졌습니다.
- 인덱스 3(Jaguar)의 Units 값 역시 뒤 행인 인덱스 4(Mustang)의 값 110.0으로 채워졌습니다.
즉, 'bfill'은 각 결측치를 바로 다음 행의 유효한 값으로 대체합니다. 반대로 앞선 행의 값으로 결측치를 채우고 싶다면 'ffill'(forward fill)을 사용하면 됩니다.