데이터 타입과 관련하여 질문드립니다.

조회수 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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)