首页 > 解决方案 > 如何根据其他数据框过滤一个熊猫数据框日期

问题描述

我有一个数据框,我需要根据另一个数据框的开始和结束日期过滤日期

下面给出了示例集。大熊猫实现这一目标的最佳方法是什么?

考虑到如下示例数据框,我已经包含了预期的结果集

df1 

ID all_date   clicks
1  2019-08-21   5
1  2019-08-22   4
2  2019-07-18   5
2  2019-07-21   5
2  2019-07-23   6

df2

ID start_date  end_date
1  2019-08-21 2019-08-21
2  2019-07-18 2019-08-21

预期输出:

df1

ID all_date   clicks
1  2019-08-21   5
2  2019-07-18   5
2  2019-07-21   5

标签: pythonpython-3.xpandaspandasql

解决方案


你可以melt然后merge

首先最好将日期转换为日期时间,以防它们是字符串:

df1.all_date=pd.to_datetime(df1.all_date)
df2[['start_date','end_date']]=df2[['start_date','end_date']].apply(pd.to_datetime)

df1.merge(df2.melt('ID',value_name='all_date').drop('variable',1),on=['ID','all_date'])

   ID   all_date  clicks
0   1 2019-08-21       5
1   1 2019-08-21       5
2   2 2019-07-18       5

详细信息,当melt你得到:

df2.melt('ID',value_name='all_date').drop('variable',1)

   ID   all_date
0   1 2019-08-21
1   2 2019-07-18
2   1 2019-08-21
3   2 2019-08-21

然后加入'ID','all_date'两个数据框


推荐阅读