> 백엔드 개발 > 파이썬 튜토리얼 > 날짜 범위별로 DataFrame 행을 효율적으로 필터링하는 방법은 무엇입니까?

날짜 범위별로 DataFrame 행을 효율적으로 필터링하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-12 16:30:11
원래의
926명이 탐색했습니다.

How to Efficiently Filter DataFrame Rows by Date Range?

지정된 날짜 범위 내의 DataFrame 행 쿼리

이 질문은 날짜 열. 제공된 솔루션은 이를 달성하기 위한 두 가지 접근 방식을 제공합니다.

방법 1: 부울 마스크 활용

이 방법을 채택하려면 DataFrame의 '날짜'가 dtype datetime64[ns]를 사용하는 시리즈입니다. 다음 단계를 따르세요.

  1. 부울 마스크 만들기: datetime.datetimes, np.datetime64s, pd.Timestamps 또는 datetime 문자열일 수 있는 start_date 및 end_date 매개변수를 지정합니다. 날짜 범위 기준을 충족하는 행에 대해 True로 평가되는 부울 마스크를 구성합니다.
  2. 하위 DataFrame 선택: df.loc[mask]를 사용하여 마스크 조건을 통과하는 행을 추출합니다. . 또는 기존 DataFrame을 덮어쓰려면 마스크를 df = df.loc[mask]로 적용합니다.

방법 2: DatetimeIndex 할당

최적 날짜를 자주 선택하는 시나리오의 경우 이 접근 방식에는 날짜 열을 index:

  1. DatetimeIndex 설정: df.set_index(['date'])를 사용하여 날짜 열을 DatetimeIndex로 변환합니다.
  2. 행 선택 날짜별: df.loc[start_date:end_date]를 활용하여 날짜 범위를 기준으로 행을 필터링합니다. 이 선택에는 start_date와 end_date가 모두 포함됩니다.

예:

응답에 제공된 코드를 활용하여 다음 그림을 고려하세요.

import pandas as pd

df = pd.DataFrame({'date': pd.date_range('2023-03-01', periods=10)})
df['value'] = np.random.randn(10)

# Boolean Mask Approach
start_date = '2023-03-03'
end_date = '2023-03-08'
mask = (df['date'] > start_date) & (df['date'] <= end_date)
df_subset = df.loc[mask]

# DatetimeIndex Approach
df = df.set_index('date')
df_subset = df.loc[start_date:end_date]
로그인 후 복사

이렇게 하면 지정된 날짜에 해당하는 행이 포함된 두 개의 DataFrame이 생성됩니다. 범위.

위 내용은 날짜 범위별로 DataFrame 행을 효율적으로 필터링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿