Pandas DataFrame에서 여러 열이 아닌 특정 단일 열의 데이터 유형만 변경하고 싶다면 astype() 메서드를 사용하면 됩니다. 이 메서드는 딕셔너리 형태로 {열 이름: 원하는 데이터 유형}을 전달하여 선택적으로 타입을 캐스팅할 수 있습니다.
예제용 DataFrame 생성하기
먼저 두 개의 열을 가진 DataFrame을 만들어 보겠습니다. 하나는 float64 타입, 다른 하나는 int64 타입입니다.
import pandas as pd
dataFrame = pd.DataFrame(
{
"Reg_Price": [7000.5057, 1500, 5000, 8000, 9000.75768, 6000],
"Units": [90, 120, 100, 150, 200, 130]
}
)현재 데이터 유형 확인하기
각 열의 데이터 유형은 dtypes 속성으로 확인할 수 있습니다.
dataFrame.dtypes
단일 열만 int32로 캐스팅하기
이제 Units 열만 int64에서 int32로 변환해 보겠습니다. astype()에 딕셔너리를 전달하면 지정한 열에만 타입 변환이 적용됩니다.
dataFrame.astype({'Units': 'int32'}).dtypes전체 예제 코드
import pandas as pd
# DataFrame 생성
dataFrame = pd.DataFrame(
{
"Reg_Price": [7000.5057, 1500, 5000, 8000, 9000.75768, 6000],
"Units": [90, 120, 100, 150, 200, 130]
}
)
print("DataFrame ...\n", dataFrame)
print("\nDataFrame 데이터 유형 ...\n", dataFrame.dtypes)
print("\n단일 열(Units)만 int32로 캐스팅...")
print("\n변경된 DataFrame 데이터 유형 ...\n", dataFrame.astype({'Units': 'int32'}).dtypes)실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
DataFrame ... Reg_Price Units 0 7000.50570 90 1 1500.00000 120 2 5000.00000 100 3 8000.00000 150 4 9000.75768 200 5 6000.00000 130 DataFrame 데이터 유형 ... Reg_Price float64 Units int64 dtype: object 단일 열(Units)만 int32로 캐스팅... 변경된 DataFrame 데이터 유형 ... Reg_Price float64 Units int32 dtype: object
핵심 정리
astype() 메서드에 딕셔너리를 인자로 전달하면 지정한 열만 선택적으로 데이터 유형을 변환할 수 있습니다. 위 실행 결과를 보면 Units 열만 int64에서 int32로 변경되었고, Reg_Price 열은 기존의 float64 타입 그대로 유지되는 것을 확인할 수 있습니다. 참고로 astype()은 원본 DataFrame을 수정하지 않고 새로운 객체를 반환하므로, 원본을 변경하려면 결과를 다시 할당해야 합니다.