如何使用开始日期和结束日期列表筛选数据帧



如何从数据帧中筛选出具有另一个df的开始日期和结束日期的行,并将所有行合并为1个df?

DF待过滤

date                  x                 
0             2021-01-20              10    ...          
1             2021-01-22              20    ...        
2             2021-01-24              30    ...      
3             2021-03-22              4     ...          
4             2021-03-25              4     ...    
5             2021-03-27              4     ...    

时间过滤器数据帧

start_date          end_date               
0             2021-12-30            2021-01-23        
1             2021-03-23            2021-04-01                
2               ....                   ....
3               ....                   ....

预期结果数据帧

filter_date                 x            
0             2021-01-20              10    ...          
1             2021-01-22              20    ...        
4             2021-03-25              4     ...    
5             2021-03-27              4     ...    

谢谢!

获取开始日期和结束日期之间的所有天数,然后在boolean indexing:中按Series.isin进行筛选

print (df2)
start_date    end_date
0  2020-12-30  2021-01-23
1  2021-03-23  2021-04-01
L = [x for s, e in zip(df2['start_date'], df2['end_date']) for x in pd.date_range(s, e)]
df1['date'] = pd.to_datetime(df1['date'])
df = df1[df1['date'].isin(L)]
print (df)
date   x     
0 2021-01-20  10  ...
1 2021-01-22  20  ...
4 2021-03-25   4  ...
5 2021-03-27   4  ...

最新更新