Python Pandas에서 두 날짜 사이의 데이터프레임 행 선택하기
Python Pandas에서 두 날짜 사이의 데이터프레임 행 선택하기
loc 속성 사용:
# 날짜 열 이름
date_column = "날짜"
# 시작 날짜 및 종료 날짜
start_date = "2023-01-01"
end_date = "2023-12-31"
# 두 날짜 사이의 행 선택
df = df.loc[df[date_column] >= start_date, df[date_column] <= end_date]
query 메서드 사용:
# 날짜 열 이름
date_column = "날짜"
# 시작 날짜 및 종료 날짜
start_date = "2023-01-01"
end_date = "2023-12-31"
# 두 날짜 사이의 행 선택
df = df.query(f"{date_column} >= '{start_date}' and {date_column} <= '{end_date}'")
between 함수 사용:
# 날짜 열 이름
date_column = "날짜"
# 시작 날짜 및 종료 날짜
start_date = "2023-01-01"
end_date = "2023-12-31"
# 두 날짜 사이의 행 선택
df = df[df[date_column].between(start_date, end_date)]
주의 사항:
- 날짜 열의 데이터 유형이
datetime
또는date
형식인지 확인해야 합니다. - 날짜 형식이 문자열인 경우
pd.to_datetime()
함수를 사용하여 변환해야 합니다.
예시:
# 데이터프레임 생성
df = pd.DataFrame({"날짜": ["2023-01-01", "2023-02-01", "2023-03-01", "2023-04-01", "2023-05-01"]})
# 두 날짜 사이의 행 선택
df = df.loc[df["날짜"] >= "2023-02-01", df["날짜"] <= "2023-04-01"]
# 결과 출력
print(df)
# 출력
# 날짜
# 1 2023-02-01
# 2 2023-03-01
# 3 2023-04-01
예제 코드
# 라이브러리 임포트
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({
"날짜": ["2023-01-01", "2023-02-01", "2023-03-01", "2023-04-01", "2023-05-01"],
"값": [10, 20, 30, 40, 50]
})
# 시작 날짜 및 종료 날짜
start_date = "2023-02-01"
end_date = "2023-04-01"
# **방법 1: `loc` 속성 사용**
df_loc = df.loc[df["날짜"] >= start_date, df["날짜"] <= end_date]
# **방법 2: `query` 메서드 사용**
df_query = df.query(f"{df['날짜']} >= '{start_date}' and {df['날짜']} <= '{end_date}'")
# **방법 3: `between` 함수 사용**
df_between = df[df["날짜"].between(start_date, end_date)]
# 결과 출력
print("**방법 1: `loc` 속성 사용**")
print(df_loc)
print("**방법 2: `query` 메서드 사용**")
print(df_query)
print("**방법 3: `between` 함수 사용**")
print(df_between)
출력:
**방법 1: `loc` 속성 사용**
날짜 값
1 2023-02-01 20
2 2023-03-01 30
3 2023-04-01 40
**방법 2: `query` 메서드 사용**
날짜 값
1 2023-02-01 20
2 2023-03-01 30
3 2023-04-01 40
**방법 3: `between` 함수 사용**
날짜 값
1 2023-02-01 20
2 2023-03-01 30
3 2023-04-01 40
대체 방법
iterrows 메서드 사용:
# 날짜 열 이름
date_column = "날짜"
# 시작 날짜 및 종료 날짜
start_date = "2023-01-01"
end_date = "2023-12-31"
# 두 날짜 사이의 행 선택
for index, row in df.iterrows():
if row[date_column] >= start_date and row[date_column] <= end_date:
# 선택된 행 처리
...
NumPy where 함수 사용:
# 날짜 열 이름
date_column = "날짜"
# 시작 날짜 및 종료 날짜
start_date = "2023-01-01"
end_date = "2023-12-31"
# 두 날짜 사이의 행 선택
mask = np.where((df[date_column] >= start_date) & (df[date_column] <= end_date))
# 선택된 행 처리
df_selected = df[mask]
Pandas apply 함수 사용:
# 날짜 열 이름
date_column = "날짜"
# 시작 날짜 및 종료 날짜
start_date = "2023-01-01"
end_date = "2023-12-31"
# 두 날짜 사이의 행 선택
def is_in_range(row):
return row[date_column] >= start_date and row[date_column] <= end_date
df_selected = df.apply(is_in_range, axis=1)
python pandas dataframe