下面前两个表是 cat1
和cat2
table
基本上,我希望留下加入cat1
与 cat2
,其中cat1
日期介于 cat2
的开始/结束日期之间
最后一个表是结果,我应该如何实现这个结果?
请查找下面的代码 cat1
和cat2
import pandas as pd
from datetime import date
cat1=pd.DataFrame({
"CatID":[1, 2, 3],
"Date":[date(2019,10,1), date(2019,11,1), date(2019,12,1)]
})
cat2=pd.DataFrame({
"Interesting":[1, 2, 3],
"StartDate":[date(2019,10,1), date(2019,11,1), date(2018,10,6)],
"EndDate":[date(2019,10,30), date(2019,11,30), date(2018,10,6)]
})
最佳答案
最简单的方法..
import pandas as pd
from datetime import date
cat1=pd.DataFrame({"CatID":[1,2,3],
"Date":[date(2019,10,1),date(2019,11,1),date(2019,12,1)]})
cat2=pd.DataFrame({"Interesting":[1,2,3],
"StartDate":[date(2019,10,1),date(2019,11,1),date(2018,10,6)],
"EndDate":[date(2019,10,30),date(2019,11,30),date(2018,10,6)]})
cat3_data = []
for interesting, start, end in cat2.values:
for d in pd.date_range(start, end, freq='D'):
cat3_data.append([d.date(), interesting])
cat3 = pd.DataFrame(cat3_data, columns=['Date', 'Interesting'])
result = pd.merge(cat1, cat3, how='left', on='Date')
结果
CatID Date Interesting
0 1 2019-10-01 1.0
1 2 2019-11-01 2.0
2 3 2019-12-01 NaN
关于python - 使用开始日期和结束日期进行左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58927686/