擅长:python、mysql、java
<p>这是你问题的可能答案</p>
<pre><code>import numpy as np
import pandas as pd
data_temp_1 = pd.merge(daily,calendar,how='cross')
data_temp_2 = data_temp_1.query('country=="us"')
indices = np.where((data_temp_2['date'] >= data_temp_2['date_start']) & (data_temp_2['date'] <= data_temp_2['date_end']),True,False)
final_df = data_temp_2[indices]
final_df.reset_index(drop=True,inplace=True)
</code></pre>
<p><a href="https://i.stack.imgur.com/I6niL.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/I6niL.png" alt="final_output"/></a></p>
<p>为了获得预期的df,我们可以使用代码</p>
<ul>
<li><code>expected_df = pd.merge(daily,final_df,how='left')[['date','value','events']]</code>
<a href="https://i.stack.imgur.com/alCld.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/alCld.png" alt="expected output"/></a></li>
</ul>