Computer Science
dataframe 에서 any() 와 any(1)의 차이점
Hiru_93
2022. 9. 26. 23:45
다음과 같은 데이터프레임을 생성한다고 해 보자.
# let's say we have a dataframe such as:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A':[0,1,2],
'B':[1,2,3],
'C':[2,3,4]})
column = ['C']
df.loc[1,'B'] = np.nan
df[column] = np.nan
df
출력하면 아래와 같이 나온다.
A B C
0 0 1.0 NaN
1 1 NaN NaN
2 2 3.0 NaN
여기서 A와 B칼럼에 대해서 결측치(NaN)값만 추출해 보자
sols = ['A','B']
df[sols].isnull().any()
any()로 할 경우 any(0)와 같기 때문에 칼럼 기준으로 결측치 여부를 판별한다
A False
B True
dtype: bool
any(1)로 할 경우 행(row)기준으로 결측치 여부를 판별한다
df[sols].isnull().any(1)
0 False
1 True
2 False
dtype: bool
any()를 쓸 경우 데이터량이 많을 때, 종종 칼럼만 출력되고 행은 출력이 되지 않는 현상으로 나타난다
cons = ['PC_SPOUSE', 'PC_PARENT','PC_CHILD','PC_SIBSHIP','PC_RELATIVE','PC_LOVER','PC_FRIEND']
condition = (new_df_D.EXCLUDE==2) & (new_df_D.PERSONCONCERNED==1) & (new_df_D[cons]==1).any()
new_df_D[condition]
위와 같은 코드를 썼을 때 빈 칼럼만 나오는 경우가 있다.
any(1) 로 고쳐주면 정상적으로 출력된다
EXCLUDE PERSONCONCERNED PC_DK PC_SPOUSE PC_PARENT PC_GRANDPARENT PC_CHILD PC_SIBSHIP PC_RELATIVE PC_LOVER PC_FRIEND PC_STRANGER PC_ETC PCETC_DTL WARNSIGN_TP WARNSPEAK_DK WARNSPEAK1 TIME1 WARNSPEAK2 TIME2 WARNSPEAK3 TIME3 WARNSPEAK4 WARNSPEAK4DTL TIME4 WARNBEHAV_DK WARNBEHAV1 TIME5 WARNBEHAV2 TIME6 WARNBEHAV3 TIME7 WARNBEHAV4 WARNBEHAV4DTL TIME8 WARNEMOTION_DK WARNEMOTION1 TIME9 WARNEMOTION2 TIME10 WARNEMOTION3 TIME11 WARNEMOTION4 WARNEMOTION4DTL TIME12 WARNSIGN_DTL EVENT_DTL EVENT_DTL_2
64259 2 1 NaN 2.0 2.0 2.0 2.0 2.0 2.0 2.0 1.0 2.0 2.0 NaN 88 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 변사자 신원이 확인되지 않아 관련 내용을 확인할 수 없었음. 1. 변사자 정보 : UNKNOWN_999999-1999999 2. 발견일시 : ****년 **월 **일 **:00 3. 시도(발견)장소 1) 수사기록 상 주소 주... NaN
103782 2 1 NaN 2.0 2.0 2.0 2.0 2.0 2.0 2.0 1.0 2.0 2.0 NaN 88 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 변사자는 **년 전부터 ***의 ****와 동거하던 자로, 사망 당시 **세 정도의 연세이다. ****.*월 ... NaN