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’ 개체를 호출할 수 없습니다.
수정 방법: 유형 오류: 예상 문자열 또는 바이트 개체