반응형

06-05. 결측값 없는 마지막 행 반환 (asof)

DataFrame.asof(where, subset=None)

 

개요


asof 메서드는 인덱스 기준으로 where이전에 결측치가 없는 마지막 행을 구합니다.

 

사용법


기본 사용법
df.asof(where, subset=None)
where : 기준이 되는 인덱스 값입니다.
subset : 기준이 되는 열 입니다.

반응형

 

예시


먼저 결측치가 포함된 6x2짜리 객체를 생성해보겠습니다..

row = [10,20,30,40,50,60]
data = {'A':[1,n,n,4,5,6],'B':[7,8,9,10,n,12]}
df = pd.DataFrame(data=data, index = row)
print(df)
>>
      A     B
10  1.0   7.0
20  NaN   8.0
30  NaN   9.0
40  4.0  10.0
50  5.0   NaN
60  6.0  12.0

기본적인 사용법
where이 단일값이면 반환은 Series형태로 하게 됩니다. subset을 입력하지 않으면 모든 열에대해서 조건을 만족하는 경우를 반환합니다.

print(df.asof(where=45))
>>
A     4.0
B    10.0
Name: 45, dtype: float64

45이전에 A열과 B열 모두 결측치가 없는 행은 40입니다. Index가 40인 값을 출력하였습니다.

입력값이 list인 경우
입력값이 list인 경우 list의 각각 요소에 대해 조건을 만족하는 행을 DataFrame 형태로 반환합니다.

print(df.asof(where=[10,45,60]))
>>
      A     B
10  1.0   7.0
45  4.0  10.0
60  6.0  12.0

10이전에 A와 B모두 결측치가 없는 행은 10입니다.
45이전에 A와 B모두 결측치가 없는 행은 40입니다.
60이전에 A와 B모두 결측치가 없는 행은 60입니다.

subset의 사용
subset을 이용해 특정 열에 대해서만 만족하는 경우를 반환할 수 있습니다.
A에 대해서만 연산 할 경우

print(df.asof(where=[10,35,60],subset='A'))
>>
      A     B
10  1.0   7.0
35  1.0   7.0
60  6.0  12.0

10이전에 A에 대해서 결측치가 없는 행은 10입니다.
35이전에 A에 대해서 결측치가 없는 행은 10입니다.
60이전에 A에 대해서 결측치가 없는 행은 60입니다.

B에 대해서만 연산 할 경우

print(df.asof(where=[10,35,60],subset='B'))
>>
      A     B
10  1.0   7.0
35  NaN   9.0
60  6.0  12.0

10이전에 B에 대해서 결측치가 없는 행은 10입니다.
35이전에 B에 대해서 결측치가 없는 행은 30입니다.
60이전에 B에 대해서 결측치가 없는 행은 60입니다.

반응형

+ 최근 글