[英]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.