날짜에 대한 Pandas DataFrames 필터링
'날짜'열이있는 Pandas DataFrame이 있습니다. 이제 다음 두 달을 벗어난 날짜가있는 DataFrame의 모든 행을 필터링해야합니다. 기본적으로 다음 2 개월 이내의 행만 유지하면됩니다.
이를 달성하는 가장 좋은 방법은 무엇입니까?
경우 날짜 열이 인덱스는 다음 위치 색인 레이블 기반 색인 또는 .iloc에 대한 .loc 사용합니다.
예를 들면 :
df.loc['2014-01-01':'2014-02-01']
자세한 내용은 http://pandas.pydata.org/pandas-docs/stable/dsintro.html#indexing-selection을 참조하십시오 .
열이 인덱스 가 아닌 경우 두 가지 선택이 있습니다.
- 인덱스로 만들기 (시계열 데이터 인 경우 일시적 또는 영구적)
df[(df['date'] > '2013-01-01') & (df['date'] < '2013-02-01')]
참고 : .ix는 더 이상 사용되지 않습니다.
내 경험상 이전 답변이 정확하지 않으며 간단한 문자열을 전달할 수 없으며 datetime 객체 여야합니다. 그래서:
import datetime
df.loc[datetime.date(year=2014,month=1,day=1):datetime.date(year=2014,month=2,day=1)]
datetime 패키지를 가져 와서 날짜를 표준화 한 경우 다음을 사용하면됩니다.
df[(df['date']>datetime.date(2016,1,1)) & (df['date']<datetime.date(2016,3,1))]
datetime 패키지를 사용하여 날짜 문자열을 표준화하려면 다음 함수를 사용할 수 있습니다.
import datetime
datetime.datetime.strptime
datetime 열에 Pandas datetime 유형 (예 :)datetime64[ns]
이있는 경우 적절한 필터링을 위해 pd.Timestamp 객체 가 필요합니다 . 예를 들면 다음과 같습니다.
from datetime import date
import pandas as pd
value_to_check = pd.Timestamp(date.today().year, 1, 1)
filter_mask = df['date_column'] < value_to_check
filtered_df = df[filter_mask]
날짜가 색인에 있으면 간단히 :
df['20160101':'20160301']
pd.Timestamp를 사용하여 쿼리 및 로컬 참조를 수행 할 수 있습니다.
import pandas as pd
import numpy as np
df = pd.DataFrame()
ts = pd.Timestamp
df['date'] = np.array(np.arange(10) + datetime.now().timestamp(), dtype='M8[s]')
print(df)
print(df.query('date > @ts("20190515T071320")')
출력
date
0 2019-05-15 07:13:16
1 2019-05-15 07:13:17
2 2019-05-15 07:13:18
3 2019-05-15 07:13:19
4 2019-05-15 07:13:20
5 2019-05-15 07:13:21
6 2019-05-15 07:13:22
7 2019-05-15 07:13:23
8 2019-05-15 07:13:24
9 2019-05-15 07:13:25
date
5 2019-05-15 07:13:21
6 2019-05-15 07:13:22
7 2019-05-15 07:13:23
8 2019-05-15 07:13:24
9 2019-05-15 07:13:25
참고 URL : https://stackoverflow.com/questions/22898824/filtering-pandas-dataframes-on-dates
'IT story' 카테고리의 다른 글
오류 : 오류 1005 : 테이블을 만들 수 없습니다 (errno : 121). (0) | 2020.08.09 |
---|---|
"화면"(프로그램) 출력을 파일에 저장 (0) | 2020.08.09 |
열의 비어 있지 않은 마지막 셀 (0) | 2020.08.09 |
레코드 변경 내역을 추적하는 MySQL 옵션 / 기능이 있습니까? (0) | 2020.08.09 |
std :: vector에서 std :: string을 생성하는 방법 (0) | 2020.08.09 |