해결된 질문
작성
·
303
0
문제 4번 마지막에 데이터수를 구하기위해 sum을 할때 이런 오류가 뜹니다 ㅠㅠ
정수형이랑 수치형은 연산이 불가하다는(?) 오류인거같은데
수치형으로 바꿔보고자 int(df) int(df.sum()) 등 다양한 시도를 해봤는데 이런 식은 통하지않더라구요 ㅠㅠ
질문1) 풀이 과정에서 뭔가 잘못건드렸을까요? 왜 이런 오류가뜰까요 ㅠㅠ
질문2) 이런 오류가 떴을때 df를 수치형으로 바꾸는방법?
<작성한 코드>
# your code
import pandas as pd
df = pd.read_csv('members.csv')
cols = df.select_dtypes('object').columns
cols
df = df[cols]
df.head()
df = df.fillna(0)
df = df.T
df.head()
print(sum(df.sum() > 3000)) <--------이 과정에서 발생되는 오류입니다
<오류메세지>
/usr/local/lib/python3.10/dist-packages/pandas/_libs/ops.pyx in pandas._libs.ops.scalar_compare()
TypeError: '>' not supported between instances of 'str' and 'int'
답변 1
0
이렇게 오류가 발생할 경우
1. df.head()를 살펴 봅니다.
수치형만 있는 것이 아니라 범주형 변수까지 포함하고 있네요! 그렇다면 수치형 컬럼만 선택이 되지 않았네요
수치형 변수를 선택하는 cols = df.select_dtypes('object').columns 코드를 살펴 봅니다.
여기서 에러를 찾을 수 있다면 exclude='object'를 잘못 입력해 모든 컬럼이 선택되었다는 것을 확인할 수 있네요
만약 cols = df.select_dtypes('object').columns를 보고도 에러가 뭔지 도저히 찾지 못할 때가 있어요
그때는 cols=['컬럼명','컬럼명'] 형태로 직접 입력하는 것이 빠르게 해결 가능할 것 같아요!
합격 응원하겠습니다 :)