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