繁体   English   中英

如何根据其他数据框过滤一个熊猫数据框日期

[英]How to filter one pandas dataframe dates on the basis of other dataframe

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

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

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

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

您可以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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM