인프런 커뮤니티 질문&답변
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() 인 행만을 대상으로 위의 처리를 해보시면 원하는 텍스트만 추출해 보실 수 있을거에요.
즉, 결측치를 제외하고 처리해 보세요.





