Pandas에서 수정하는 방법: 문자열을 부동 소수점으로 변환할 수 없습니다.


Pandas를 사용할 때 발생할 수 있는 일반적인 오류는 다음과 같습니다.

 ValueError : could not convert string to float: '$400.42'

이 오류는 일반적으로 문자열에 다음 중 하나 이상이 포함된 경우 Pandas에서 문자열을 부동 소수점으로 변환하려고 할 때 발생합니다.

  • 공간
  • 쉼표
  • 특수 문자

이런 일이 발생하면 문자열을 부동 소수점으로 변환하기 전에 먼저 문자열에서 이러한 문자를 제거해야 합니다.

다음 예에서는 실제로 이 오류를 해결하는 방법을 보여줍니다.

오류를 재현하는 방법

다음과 같은 팬더 DataFrame이 있다고 가정합니다.

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'B', 'C', 'D'],
                   ' revenue ': ['$400.42', '$100.18', '$243.75', '$194.22']})

#view DataFrame
print (df)

  store revenue
0 A $400.42
1 B $100.18
2 C $243.75
3D $194.22

#view data type of each column
print ( df.dtypes )

store object
revenue object
dtype:object

이제 수익 열을 문자열에서 부동 소수점으로 변환하려고 한다고 가정합니다.

 #attempt to convert 'revenue' from string to float
df[' revenue '] = df[' revenue ']. astype (float)

ValueError : could not convert string to float: '$400.42'

소득 열의 문자열에 달러 기호가 포함되어 있기 때문에 오류가 발생합니다.

오류를 수정하는 방법

이 오류를 해결하는 방법은 변환을 수행하기 전에 replacement() 함수를 사용하여 소득 열의 달러 기호를 아무것도 없는 것으로 바꾸는 것입니다.

 #convert revenue column to float
df[' revenue '] = df[' revenue ']. apply ( lambda x: float(x. split ()[ 0 ]. replace (' $ ', '')))

#view updated DataFrame
print (df)

  store revenue
0 to 400.42
1 B 100.18
2 C 243.75
3 D 194.22

#view data type of each column
print ( df.dtypes )

store object
income float64
dtype:object

수익 열을 문자열에서 부동 소수점으로 변환할 수 있으며 변환을 수행하기 전에 달러 기호를 제거했기 때문에 오류가 발생하지 않습니다.

추가 리소스

다음 튜토리얼에서는 Python의 다른 일반적인 오류를 수정하는 방법을 설명합니다.

Python에서 수정하는 방법: ‘numpy.ndarray’ 개체를 호출할 수 없습니다.
수정 방법: TypeError: ‘numpy.float64’ 개체를 호출할 수 없습니다.
수정 방법: 유형 오류: 예상 문자열 또는 바이트 개체

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다