Python/Python For Analytics

[Python] padnas Dataframe 에서 astype을 이용하여 숫자형으로 변환할 수 없을 때 to_numeric을 이용

Pydole 2020. 8. 2. 16:36

 

astype을 이용하여 문자열을 숫자형으로 형 변환할 때, 사용하지만 일부 변환할 수 없는 데이터가 있을 때는,

 

ValueError 에러를 발생시킨다.

 

 

이럴경우, to_numeric을 이용하여, 변환할 수 없는 데이터를 NaN 처리하고, 변환 시킬 수 있다.

 

 


 

아래와 같이 price에 1500a라는 값이 있다. Dataframe을 만들 때, object 타입으로 만들어 지며, 

 

이 데이터 때문에 astype을 이용하여 숫자형을 변경할 수 없다.

 

import pandas as pd

df = pd.DataFrame([['milk',1000],['icecream',500],['bread','1500a']],
                  columns=['food','price'])

df

 

 

df.dtypes

 

 

df['price'] = df['price'].astype(int)
df.dtypes

ValueError: invalid literal for int() with base 10: '1500a'

 

 

 


 

이럴 경우, to_numeric을 이용하여 errors = coerce 옵션으로 변환할 수 없는 데이터는 NaN으로 바꾸고,

 

타입을 변경한다.

 

df['price'] = pd.to_numeric(df['price'], errors='coerce')
df