강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

부드러운 바다표범님의 프로필 이미지
부드러운 바다표범

작성한 질문수

공공데이터로 파이썬 데이터 분석 시작하기

3강을 듣고 있습니다.

작성

·

216

1

현재, 3강을 수강중입니다. 프랜차이즈 중 서울만을 강의로 해주셨는데, 전국을 대상으로 하고자 하여 진행중입니다.

아래와 같이 입력하였는데,

df = df[df["상호명_소문자"].str.contains(

    '배스킨라빈스|베스킨라빈스|baskinrobbins|던킨|dunkin')].copy()

df.shape

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-53-37ae5038ef79> in <module>
      4 
      5 df = df[df["상호명_소문자"].str.contains(
----> 6     '배스킨라빈스|베스킨라빈스|baskinrobbins|던킨|dunkin')].copy()
      7 df.shape

~\Anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
   2968 
   2969         # Do we have a (boolean) 1d indexer?
-> 2970         if com.is_bool_indexer(key):
   2971             return self._getitem_bool_array(key)
   2972 

~\Anaconda3\lib\site-packages\pandas\core\common.py in is_bool_indexer(key)
    128             if not lib.is_bool_array(key):
    129                 if isna(key).any():
--> 130                     raise ValueError(na_msg)
    131                 return False
    132             return True

ValueError: cannot index with vector containing NA / NaN values

이와 같은 에러메세지를 해결하고자 하는데 방법을 찾기 힘듭니다. 무엇인 문제인지요?

답변 1

1

박조은님의 프로필 이미지
박조은
지식공유자

안녕하세요!

전체 데이터로 실습 멋집니다! 

대부분 이런 오류는 오류메시지의 맨 마지막을 보면 어떤 오류인지를 알 수 있어요.

ValueError: cannot index with vector containing NA / NaN values

이 오류 메시지를 보면 NaN Value 가 있다고 해요.

df["상호명_소문자"] 에서 string 의 메소드를 사용하는데 여기에서는 데이터의 타입이 string 인 것만을 대상으로 처리할 수 있어요.

마치 숫자 1과 문자"2" 를 더했을 때  1 + "2" 로 연산을 하면 타입 오류가 나는 것과 비슷한 문제에요.

 NaN Value 는 float 타입이에요. 숫자 타입이라 문자열 연산을 할 수가 없죠.

df["상호명_소문자"] 에서 notnull() 인 행만을 대상으로 위의 처리를 해보시면 원하는 텍스트만 추출해 보실 수 있을거에요.

즉, 결측치를 제외하고 처리해 보세요.

부드러운 바다표범님의 프로필 이미지
부드러운 바다표범

작성한 질문수

질문하기