본문 바로가기
파이썬(Python)

데이터프레임-특정필드의 데이터타입이 float를 int 로 변경하고자 할 때 NA 로 되어 있는 경우 오류 해결

by 즐거운코딩 2025. 8. 18.
반응형

숫자 데이터를 정수로 표현하고자 하는데 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))

   

알면 단순하지만 모르면 엄청 헤매는 부분이어서 오류 대응방법을 정리해 보았습니다.

반응형