Python Pandas Date filtering - PullRequest
0 голосов
/ 08 июля 2019

У меня есть файл Excel с столбцами даты начала и окончания, который я хочу отфильтровать

Все работает нормально с приведенным ниже кодом, но одна проблема все еще существует

Проблема - при фильтрации данных результаты превышают конечную дату, например. - если моя дата окончания 29.05.2009, это даст мне результаты до 31.05.2009. Я просто хочу, чтобы результаты оставались в пределах или меньше даты окончания.

Как этого достичь?

Используемый код

df['QC START DATE'] = pd.to_datetime(df['QC START DATE'])
df = df[(((df['QC START DATE'] >= startdateEn.get()) &
 (df['QC START DATE'] <= endateEn.get())) | 
((df['QC END DATE'] >= startdateEn.get()) &
 (df['QC END DATE'] <= endateEn.get())))]

1 Ответ

0 голосов
/ 08 июля 2019

Если я использую Начальную дату как 01.01.2009 и Конечную дату как 1/7/2019, фильтрация должна быть выполнена так, как я хочу, чтобы записи имели дату окончания до 1/7/2019, даже еслидата начала не в пределах 01.01.2009

Итак ... если я правильно понимаю, все, что вы хотите от нас, это отфильтровать дату окончания?Если дата начала может быть вне диапазона, вы не фильтруете ее.Я предполагаю, что вы хотите, чтобы дата окончания между двумя диапазонами дат: start < end dates < end

Предполагается, что ваши данные в формате даты и времени:

import pandas as pd
from datetime import datetime
start_date = datetime_object = datetime.strptime('6/2/2018', '%m/%d/%Y')
end_date = datetime_object = datetime.strptime('12/2/2018', '%m/%d/%Y')
sub_set = dates[dates["end_date"].apply(lambda x: start_date <= datetime.strptime(x, '%m/%d/%Y') <= end_date)]
display (subset)

output:

dates
0   8/3/2018
1   9/13/2018
3   7/10/2018
4   10/20/2018
6   8/13/2018
7   10/8/2018
9   10/22/2018
12  8/30/2018
13  11/18/2018
14  7/3/2018
15  7/26/2018
19  10/20/2018
23  9/3/2018
24  10/19/2018
27  8/31/2018
30  9/27/2018
34  8/3/2018
36  8/26/2018
40  7/11/2018
41  9/6/2018
42  9/16/2018
48  8/22/2018
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...