我有一个Excel文件,其中包含要过滤的“开始日期”和“结束日期”列
使用以下提到的代码,一切都可以正常运行,但是仍然存在一个问题
问题-过滤数据后,我得到的结果超出了结束日期。例如-如果我的结束日期是2019年5月29日,那么我得到的结果将持续到2019年5月31日。我只希望结果保持在或小于结束日期。
如何实现?
使用的代码
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())))]
答案 0 :(得分:0)
如果我将“开始日期”用作1/1/2019,将“结束日期”用作1/7/2019,则应进行过滤,因为我希望那些具有结束日期直到1/7/2019的条目,即使开始日期是不在1/1/2019
那么...如果我理解正确,那么您想要我们做的就是过滤结束日期?如果开始日期可能超出范围,那么您就不会对其进行过滤。我假设您想要的是两个日期范围之间的结束日期: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