Pandas Index가 숫자 데이터로만 구성되어 있는지 확인하려면 index.is_numeric() 메서드를 사용하면 됩니다. 이 메서드는 인덱스의 값이 정수(int), 실수(float), NaN 등 숫자형 데이터로만 이루어져 있으면 True를 반환하고, 그렇지 않으면 False를 반환합니다.
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
import numpy as np
숫자형 인덱스 생성하기
정수, 실수, NaN이 함께 포함된 Pandas 인덱스를 생성해 보겠습니다.
index = pd.Index([5, 10.2, 25, 50, 75.2, 100, np.nan])
생성한 Pandas 인덱스를 출력합니다.
print("Pandas Index...\n", index)
인덱스가 숫자 데이터인지 확인하기
is_numeric() 메서드를 호출하여 인덱스 값이 숫자 데이터(정수, 실수, NaN 포함)로만 구성되어 있는지 확인합니다.
index.is_numeric()
전체 예제 코드
다음은 지금까지 설명한 내용을 모두 포함한 전체 코드입니다.
import pandas as pd
import numpy as np
# 정수, 실수, NaN이 포함된 Pandas 인덱스 생성
index = pd.Index([5, 10.2, 25, 50, 75.2, 100, np.nan])
# Pandas 인덱스 출력
print("Pandas Index...\n", index)
# 인덱스의 요소 개수 반환
print("\nNumber of elements in the index...\n", index.size)
# 데이터의 dtype 반환
print("\nThe dtype object...\n", index.dtype)
# 인덱스 값이 숫자 데이터로만 구성되어 있는지 확인
# 숫자 데이터에는 정수, 실수, NaN이 포함됨
print("\nIndex values only consists of numeric data?\n", index.is_numeric())
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Pandas Index... Float64Index([5.0, 10.2, 25.0, 50.0, 75.2, 100.0, nan], dtype='float64') Number of elements in the index... 7 The dtype object... float64 Index values only consists of numeric data? True
결과를 보면 인덱스에 정수와 실수, NaN이 섞여 있지만 모두 숫자형으로 취급되기 때문에 is_numeric()이 True를 반환한 것을 확인할 수 있습니다. 또한 정수와 실수가 섞여 있으므로 인덱스의 dtype은 자동으로 float64로 승격된 점도 주목할 만합니다.
참고: 최신 Pandas 버전에서의 대안
is_numeric() 메서드는 Pandas 2.0부터 더 이상 권장되지 않습니다(deprecated). 최신 버전 환경에서 작업한다면 아래와 같이 dtype을 직접 검사하는 방식을 사용하는 것이 좋습니다.
# 방법 1: numpy의 issubdtype으로 숫자형 여부 확인
print(np.issubdtype(index.dtype, np.number))
# 방법 2: pandas API 타입 함수 활용
print(pd.api.types.is_numeric_dtype(index))
두 방법 모두 인덱스가 숫자형 dtype(float64, int64 등)을 가질 때 True를 반환하므로, 버전에 관계없이 안정적으로 동일한 목적을 달성할 수 있습니다.