>

CSV 파일에서 가져온 열의 값에 대해 수학 연산을 수행하려고합니다. 이를 위해 아래 코드를 작성했습니다.

rows = csv.reader(open('sample_data_ml.csv', 'r'))
newrows = []
selling_price = []
count = 0
Y_pred = np.asarray(Y_pred, dtype='float64')
for margin in Y_pred:
    for row in rows:
            if count == 0:
               count = count+1
            else: 
               #print(row[7])
               sell = float(row[7]) + margin*float(row[7])
               selling_price.append(sell)
print(selling_price)

이 오류가 발생합니다 :

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-29-d6009e8dad12> in <module>()
     16             #row[7] = float(row[7])
     17 
---> 18             sell = float(row[7]) + margin*float(row[7])
     19             selling_price.append(sell)
     20 
ValueError: could not convert string to float:

행 [7]의 값에 문제가있을 수 있습니다. 극복하는 방법?

수정 : csv의 행 [7]은 다음과 같습니다 (일부 샘플 값).

제안대로 블록 제외 시도를 추가 한 후 열의 모든 값을 블록 제외 출력으로 가져옵니다.

[array([312.81321038]), array([223.43800741]), array([1489.58671609]), array([49.34255997]), array([726.17352409]), array([2583.50196071]), array([116.37396219]), array([395.67147146]), array([27.92975093]), array([260.67767531]), array([1117.19003706]), array([1024.09086731]), array([884.44211268]), array([325.84709414]), array([186.19833951]), array([316.53717717]), array([43.75660979]), array([605.14460341]), array([5492.85101557]), array([65.16941883]), array([3798.44612602]), array([884.44211268]), array([1210.28920682]), array([726.17352409]), array([625.62642076]), array([698.24377317]), array([204.81817346]), array([1396.48754633]), array([325.84709414]), array([1815.43381023]....)

해당 열의 모든 값이 문제와 관련이있는 것 같습니다. 진행하는 방법?


  • 답변 # 1

    캐치에 넣고 시도해보십시오 :

    try:
       sell = float(row[7]) + margin*float(row[7])
       selling_price.append(sell)
     except ValueError, e:
        # report the error in some way that is helpful -- maybe print   
        print(row[7])
        row[7] = 0   # just to be safe
    
    

  • 답변 # 2

    가능한 해결책이 될 수 있습니다.

    블록을 제외하고 코드를 감싸고 다음을 제외하고 오류를 처리 할 수 ​​있습니다

    블록을 제외하고

    숫자 만 추출하고 플로트로 변환 할 수 있습니다

    그냥 건너 뛰십시오

    float로 변환 할 수있는 문자열 번호가없는 경우 기본값을 0으로 설정

    실패한 행을 로그에 기록

    
        try:
        except ValueError:
               #handle here
    
    
    

관련 자료

  • 이전 php - Webconfig 파일로 인해 Robotstxt 파일이 표시되지 않습니다
  • 다음 java - javaxmail을 사용하여 메일 본문에 인코딩 된 이미지 전송