반응형
파이썬에서 엑셀이나 csv로 데이터를 불러올 때 정수 데이터 인데 중간에 데이터가 누락 등 여러 가지 원인으로 float 타입으로 인식되는 경우가 많습니다.
데이터 가공 후 저장할 때 정수 데이터로 표출하기 위해서 몇가지 경우에 따른 수정방법은 다음과 같습니다.
float → int 변환 시 NaN 값 때문에 에러가 발생합니다.
(int 타입은 NaN을 가질 수 없기 때문입니다.)
해결 방법은 크게 세 가지가 있습니다.
1. NaN 을 채운 뒤 int 변환
NaN 을 0이나 다른 값으로 채운 후 astype(int) 변환
import pandas as pd
import numpy as np
df = pd.DataFrame({"num": [1.0, 2.0, np.nan, 4.0]})
# NaN → 0 으로 채우고 int 변환
df["num_int"] = df["num"].fillna(0).astype(int)
print(df)
👉 결과:
num num_int
0 1.0 1
1 2.0 2
2 NaN 0
3 4.0 4
2. NaN 유지하면서 int 로 (pandas nullable int 타입 사용)
Int64 (대문자 I) 타입은 NaN 을 허용하는 정수 타입입니다.
df["num_int"] = df["num"].astype("Int64")
print(df)
👉 결과:
num num_int
0 1.0 1
1 2.0 2
2 NaN <NA>
3 4.0 4
3. NaN 값은 삭제 후 변환
NaN 이 필요 없는 경우는 drop 후 변환
df = df.dropna(subset=["num"])
df["num_int"] = df["num"].astype(int)
👉 정리하면,
- NaN 을 다른 값으로 채울 수 있다 → fillna(0).astype(int)
- NaN 도 유지해야 한다 → astype("Int64")
반응형
'파이썬(Python)' 카테고리의 다른 글
데이터프레임 월단위 칼럼 데이터 일괄 변경하기 (for문, if문 사용) (0) | 2025.09.08 |
---|---|
데이터프레임-특정필드의 데이터타입이 float를 int 로 변경하고자 할 때 NA 로 되어 있는 경우 오류 해결 (0) | 2025.08.18 |
데이터프레임-transform() 활용하기 (2) | 2025.08.18 |
파이썬-데이터프레임 변환 melt, pivot 함수 사용하기 (2) | 2025.08.17 |
파이썬-피봇테이블(pivot table) NaN, 다중컬럼 처리하기 (1) | 2025.08.17 |