ㅅㅇ
[pandas/python] query 사용 시 _ TypeError: unhashable type: 'Series' 본문
SW_STUDY/TroubleShooting
[pandas/python] query 사용 시 _ TypeError: unhashable type: 'Series'
SO__OS 2022. 6. 10. 00:26판다스 데이터 조회에서
query() 를 이용한 boolean indexing 를 할 수 있다.
하지만, 이때 series의 메소드를 이용할 경우 해당 에러가 발생할 수 있다.
* 흔히, query() 에서 사용하는 series의 메소드는 다음과 같다.
문자열 부분검색
- 컬럼명.str.contains(문자열) : 문자열을 포함하고 있는
- 컬럼명.str.startswith(문자열) : 문자열로 시작하는
- 컬럼명.str.endswith(문자열) : 문자열로 끝나는
결측치 비교 - Series 의 메소드 사용
- 컬럼.isna(), isnull()
- 컬럼.notna(), notnull()
아래의 코드를 실행하고자 하였다.
# 결측치 조회- Series의 메소드 사용
df.query("tall.isnull()")
# 특정 문자열을 포함하는
df.query('name.str.contains("영")')
그러나, 다음과 같은 오류가 발생하였다.
TypeError: unhashable type: 'Series'
오류 원인
파이썬 넘파이 버전 문제인 것 같기도 하지만, 일단 다시 설치를 하기가 힘들어, 다른원인과 방법에 대해 찾아보았다.
구글링 결과 query 함수에 들어가는 쿼리문을 해석하는 엔진 기본값으로 'numexpr' 로 설정되어 있고
이 엔진이 isnull 함수를 해석하지 못하기 때문이라고 한다.
해결 방안
=> 엔진을 바꿔주면 된다. 아래와 같이 engine 인자에 'python' 을 넣어주면 된다.
# 결측치 조회- Series의 메소드 사용
df.query("tall.isnull()", engine='python')
# 특정 문자열을 포함하는
df.query('name.str.contains("영")', engine = 'python')
'SW_STUDY > TroubleShooting' 카테고리의 다른 글
[python] RuntimeError: deque mutated during iteration. (0) | 2022.06.10 |
---|