반응형
숫자 데이터를 정수로 표현하고자 하는데 csv, excel에서 원천 데이터를 불러올 때 실수(float)로 보이는 경우가 많습니다.
이럴 경우 정수인데 소숫점으로 보여서 보기가 안좋은 경우가 있는데 단순히 astype(int) 로 변경시 오류가 발생되기도 합니다.
왜 오류가 생기고, 어떻게 해결하면 되는지 정리해보았습니다.
파이썬 pandas에서는
float 타입 컬럼을 int 타입으로 변환할 때,
NaN(결측치) 가 있으면 바로 오류가 발생합니다:
ValueError: cannot convert float NaN to integer
✅ 해결 방법
바로 int로 변환하지 말고,
pandas의 Int64 (nullable integer) 타입을 사용하면 됩니다!
Int64 타입은 NaN도 허용하는 정수형입니다.
✅ 코드 예시
import pandas as pd
# 예시 데이터
df = pd.DataFrame({
'A': [1.0, 2.0, None, 4.0]
})
print(df.dtypes)
# 결과
# A float64
# 안전하게 Int로 변환
df['A'] = df['A'].astype('Int64') # 대문자 'I'!!
print(df)
print(df.dtypes)
✅ 결과
A
1 |
2 |
NaN |
4 |
자료형: Int64 (nullable integer)
✅ 한 줄 정리
df['컬럼명'] = df['컬럼명'].astype('Int64')
이렇게 하면 NaN 있는 경우에도 오류 없이 int로 바꿀 수 있습니다.
📢 추가 주의사항
- 그냥 int 로 변환하면 절대 안 됩니다 (astype(int) → 오류 발생)
- 반드시 Int64 (대문자 I !) 사용해야 합니다
추가로
- 변환 전에 NaN을 0이나 다른 값으로 채우고 싶으면 fillna(0) 하고 int 변환하는 방법도 있어요.
🚀 (예: fillna(0).astype(int))
알면 단순하지만 모르면 엄청 헤매는 부분이어서 오류 대응방법을 정리해 보았습니다.
반응형
'파이썬(Python)' 카테고리의 다른 글
데이터프레임 월단위 칼럼 데이터 일괄 변경하기 (for문, if문 사용) (0) | 2025.09.08 |
---|---|
숫자데이터의 타입 float 을 int 로 변경하기 (0) | 2025.09.08 |
데이터프레임-transform() 활용하기 (2) | 2025.08.18 |
파이썬-데이터프레임 변환 melt, pivot 함수 사용하기 (2) | 2025.08.17 |
파이썬-피봇테이블(pivot table) NaN, 다중컬럼 처리하기 (1) | 2025.08.17 |