如何从数据帧中筛选出具有另一个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 ...