데이터프레임에서 전체 값이 0인 컬럼을 삭제하고싶습니다.

조회수 59회

안녕하세요 이전 처리를 통해 데이터 프레임을 얻어냈고 그 내용중에 모든 값이 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 답변

  • 좋아요

    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
    
    • 우선 댓글 주셔서 감사합니다 어떤 의미인지는 해석이 되는데요 제가 현재 가지고 있는 데이터가 컬럼명이 우선 너무 길고,,, 컬럼도 숫자가 너무 많아서 저런식으로 하나하나 따져보기엔 까다로울거 같은데 혹시 어떻게 할 수 있는 방법ㄷ이 있을까요 ? 저 컬럼네임자리에 컬럼명이 하나씩 들어가게끔 하면서 할수도 있나요? 글랜 2022.11.21 17:19
    • 그리고 저렇게 true 값으로 나오는 컬럼명들만 따로 모으는건 어떤 방식으로 할 수 있나요? 글랜 2022.11.21 17:19

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.