본문 바로가기
파이썬

파이썬 Pandas 데이터 프레임에서 NaN 값이 포함 된 열을 찾는 방법

by º기록 2020. 11. 7.
반응형

여기 저기 흩어져있는 가능한 NaN 값을 포함하는 pandas 데이터 프레임이 주어지면 :

질문 : NaN 값이 포함 된 열을 어떻게 확인하나요? 특히 NaN이 포함 된 열 이름 목록을 얻을 수 있습니까?

 

해결 방법

 

업데이트 : Pandas 0.22.0 사용


In [71]: df
Out[71]:
     a    b  c
0  NaN  7.0  0
1  0.0  NaN  4
2  2.0  NaN  4
3  1.0  7.0  0
4  1.0  3.0  9
5  7.0  4.0  9
6  2.0  6.0  9
7  9.0  6.0  4
8  3.0  0.0  9
9  9.0  0.0  1

In [72]: df.isna().any()
Out[72]:
a     True
b     True
c    False
dtype: bool

열 목록으로 :

In [74]: df.columns[df.isna().any()].tolist()
Out[74]: ['a', 'b']

해당 열을 선택하려면 (하나 이상의 NaN 값 포함) :

In [73]: df.loc[:, df.isna().any()]
Out[73]:
     a    b
0  NaN  7.0
1  0.0  NaN
2  2.0  NaN
3  1.0  7.0
4  1.0  3.0
5  7.0  4.0
6  2.0  6.0
7  9.0  6.0
8  3.0  0.0
9  9.0  0.0

이전 답변 :


In [97]: df
Out[97]:
     a    b  c
0  NaN  7.0  0
1  0.0  NaN  4
2  2.0  NaN  4
3  1.0  7.0  0
4  1.0  3.0  9
5  7.0  4.0  9
6  2.0  6.0  9
7  9.0  6.0  4
8  3.0  0.0  9
9  9.0  0.0  1

In [98]: pd.isnull(df).sum() > 0
Out[98]:
a     True
b     True
c    False
dtype: bool

또는 @root가 더 명확한 버전을 제안했습니다.

In [5]: df.isnull().any()
Out[5]:
a     True
b     True
c    False
dtype: bool

In [7]: df.columns[df.isnull().any()].tolist()
Out[7]: ['a', 'b']

하위 집합 선택-하나 이상의 NaN 값을 포함하는 모든 열 :

In [31]: df.loc[:, df.isnull().any()]
Out[31]:
     a    b
0  NaN  7.0
1  0.0  NaN
2  2.0  NaN
3  1.0  7.0
4  1.0  3.0
5  7.0  4.0
6  2.0  6.0
7  9.0  6.0
8  3.0  0.0
9  9.0  0.0

 

참조 페이지 https://stackoverflow.com/questions/36226083

 

 

반응형

댓글