데이터프레임에서 전체 값이 0인 컬럼을 삭제하고싶습니다.
조회수 273회
안녕하세요 이전 처리를 통해 데이터 프레임을 얻어냈고 그 내용중에 모든 값이 0으로 나오는 컬럼을 제거하고 새로운 데이터 프레임을 만들고싶습니다.
예를들자면
df = pd.DataFrame([[0.0, 0.0224, 0.0123, 0.0],
[0.0, 0.0, 0.0145, 0.0],
[0.0, 0.0145, 0.0000, 0.0],
[0.0, 0.0105, 0.0255 ,0.0]],
columns = [a, b, c, d])
이런 방식으로 데이터프레임이 생겼다면 a와 d컬럼을 삭제하고 싶습니다.
실제 데이터프레임은 훨씬 크기가커서 저는
- df = df.replace(0, np.NaN) 우선 0을 결측치 값으로 변경한 후에
- df.count() 를 해서
- 결과가 0으로 나오는 컬럼명을 따로 뽑아내어
- 원래의 df에서 drop하는 방식으로 생각을 해보았습니다.
이 과정에서 df.count() == 0
인 컬럼만 따로 리스트화해서 추출해 내는 방법이 궁금합니다. 여러 시도를 해봤는데 잘 모르겠습니다.
혹시 이 방법 말고 더 편한 방법이 있을까요?
부탁드립니다 감사합니다.
1 답변
-
>>> df = pd.DataFrame([[0.0, 0.0224, 0.0123, 0.0], [0.0, 0.0, 0.0145, 0.0], [0.0, 0.0145, 0.0000, 0.0], [0.0, 0.0105, 0.0255 ,0.0]], columns = list("abcd")) >>> df a b c d 0 0.0 0.0224 0.0123 0.0 1 0.0 0.0000 0.0145 0.0 2 0.0 0.0145 0.0000 0.0 3 0.0 0.0105 0.0255 0.0 >>> df.a == 0.0 0 True 1 True 2 True 3 True Name: a, dtype: bool >>> all(df.a == 0.0) True >>> all(df.d == 0.0) True >>> all(df.b == 0.0) False ### 댓글질문에 대해 추가. >>> for col in df.columns: if all(df[col] == 0.0): print(f"{col} 컬럼의 값은 모두 0") a 컬럼의 값은 모두 0 d 컬럼의 값은 모두 0
댓글 입력