데이터 타입과 관련하여 질문드립니다.
조회수 957회
안녕하세요 코딩초보입니다.
제가 이번에 웹사이트에서 데이터를 가져오는데요 데이터의 일부가 숫자가 아닌 문자로 들어가 있습니다.
예를 들면, 다른 데이터는 전부 2.4
, 12.7
같은 float 타입인데요 가끔식 "자본잠식"
같은 문자열이 데이터에 들어가 있습니다. 이것을 숫자 0 으로 만드는 방법이 있을까요?
def strcheck(a):
if a.isalpha():
return False
elif a.isdigit():
return True
if strcheck(roe) == False:
decision_list_2 = [code, "자료부족", "자료부족", ]
else:
roe = float(roe)
실제가 제가 짠 코드는 위와 같은 방식인데요, 넣은 데이터가 문자일때는 문제없는데, 데이터가 숫자로 들어가면
'numpy.float64' object has no attribute 'isalpha'
이런 에러가 떠서요.
도움주시면 감사하겠습니다.
필요하시면 전체 코드도 올려드릴 수 있습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
하나의 리스트 안에 float형과 str형의 데이터가 같이 있고, 그 중 str형의 데이터를 float형 값 0으로 바꾸고 싶으시면 아래와 같이 하시면 됩니다.
x=[1.3, 1.5, '자료부족', 3.3, '자료부족'] print(x) for i in range(len(x)): if type(x[i])==str: x[i]=0.0 print(x)
또는
x=[1.3, 1.5, '자료부족', 3.3, '자료부족'] print(x) x=[0.0 if type(val)==str else val for val in x] print(x)
- 결과
-
(•́ ✖ •̀)
알 수 없는 사용자
- 답변 감사드립니다. 그런데 혹시 데이터 프레임 양식일 경우에는 어떻게 적용해야 하나요? 알 수 없는 사용자 2021.1.30 22:43
- 아 드뎌 방식을 찾아서 해결했습니다. 그래도 님 덕분에 질문해 가는 법을 알았어요 감사합니다.~~~ 알 수 없는 사용자 2021.1.30 23:20
- import pandas as pd; df=pd.DataFrame({'c1':[1.0,2.0,3.0,4.0,5.0], 'c2':[1.0,'자료부족',3.0,'자료부족',5.0],}); print(df); df['c2']=pd.DataFrame([0.0 if type(val)==str else val for val in df['c2'].values.tolist()]); print(df) 알 수 없는 사용자 2021.1.30 23:39
- 아 저때문에 고생 많이 하셨네요... 올려주신코드도 공부해볼께요~ 알 수 없는 사용자 2021.1.31 01:03
댓글 입력