프로그래밍/파이썬(Python)

[Pandas] 숫자 슬라이싱과 문자(라벨) 슬라이싱의 차이

정정훈훈 2024. 9. 22. 15:09
반응형

s[:5]와 s[:'다']에서 범위의 동작이 다르게 보이는 이유는, 숫자 슬라이싱라벨(문자) 슬라이싱이 pandas에서 다르게 처리되기 때문입니다.

  1. 숫자 인덱스 슬라이싱 (s[:5]):
    • pandas.Series에서 숫자로 슬라이싱을 할 때는 파이썬 기본 슬라이싱 규칙을 따릅니다. 즉, 끝 인덱스는 포함되지 않음.
    • 예를 들어, s[:5]는 0부터 4까지의 항목을 반환합니다.
    • 이 방식은 파이썬의 리스트나 배열에서 흔히 사용하는 슬라이싱 방식과 동일합니다.
     
s = pd.Series(list('가나다라마'))
s[:5]
# 결과:
# 0    가
# 1    나
# 2    다
# 3    라
# 4    마
# dtype: object
  1. 라벨(문자) 인덱스 슬라이싱 (s[:'다']):
    • pandas.Series에서 라벨(문자)로 슬라이싱할 때는, 라벨 기반 슬라이싱 규칙이 적용됩니다. 이 경우 끝 값도 포함됩니다.
    • 예를 들어, s[:'다']라고 하면 '다' 라벨까지 포함하여 반환합니다.
    • pandas에서는 라벨을 이용한 슬라이싱 시, 명시한 끝 값(여기서는 '다')을 포함하는 것이 기본 동작입니다.
     
s = pd.Series(list('가나다라마'), index=list('가나다라마'))
s[:'다']
# 결과:
# 가    가
# 나    나
# 다    다
# dtype: object

차이점 정리:

  • 숫자 인덱스 슬라이싱: 파이썬의 일반적인 슬라이싱 규칙을 따르며, 끝 인덱스는 포함되지 않음.
  • 라벨(문자) 인덱스 슬라이싱: pandas의 라벨 기반 슬라이싱 규칙을 따르며, 끝 라벨이 포함됨.

이는 pandas에서 명확한 인덱스 값의 의미를 유지하기 위한 설계라고 할 수 있습니다.

반응형