擅长:python、mysql、java
<p>您可以在daterange中转换df2并分解,然后使用<code>isin</code>过滤器df1</p>
<p>从字符串转换为日期时间(<em>忽略此步骤,因为值已经是日期时间</em>)</p>
<pre><code>df1['time'] = pd.to_datetime(df1['time'])
df2 = df2.apply(pd.to_datetime)
</code></pre>
<p>映射为<code>pd.date_range</code>和<code>explode</code>,然后使用<code>isin</code>进行筛选</p>
<pre><code>out = (df1[df1['time'].isin(df2.agg(tuple,1).map(lambda x:
pd.date_range(*x,freq='s')).explode())])
</code></pre>
<hr/>
<pre><code>print(out)
time value
1 2020-02-03 00:18:08 25
2 2020-02-03 00:18:09 14
3 2020-02-03 00:18:10 14
4 2020-02-03 00:18:11 22
6 2020-02-03 00:18:13 22
7 2020-02-03 00:18:14 22
8 2020-02-03 00:18:15 22
</code></pre>
<p>这与您的输出类似:</p>
<pre><code>print(output_graph_time)
print(output_graph_value)
['2020-02-03 00:18:08', '2020-02-03 00:18:09', '2020-02-03 00:18:10',
'2020-02-03 00:18:11', '2020-02-03 00:18:13', '2020-02-03 00:18:14',
'2020-02-03 00:18:15']
[25, 14, 14, 22, 22, 22, 22]
</code></pre>