回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p><strong>整体背景:</strong></p>
<p>我有一个数据框,它包含了从早上5点到晚上8点连续几天每5分钟的观察结果。我需要过滤每天早上9点到晚上5点的所有观察结果。你知道吗</p>
<p>输入数据框如下所示:</p>
<pre><code>Date Time
2019-09-20 05:00:00,..,..
2019-09-20 05:05:00,..,..
...
2019-09-20 09:00:00,..,..
...
2019-09-20 17:00:00,..,..
2019-09-20 17:05:00,..,..
...
2019-09-20 20:00:00,..,..
2019-09-21 05:00:00,..,..
2019-09-21 05:05:00,..,..
...
2019-09-21 09:00:00,..,..
...
2019-09-21 17:00:00,..,..
2019-09-21 17:05:00,..,..
...
2019-09-21 20:00:00,..,..
</code></pre>
<p>输出数据帧应如下所示:</p>
<pre><code>2019-09-20 09:00:00,..,..
...
2019-09-20 17:00:00,..,..
2019-09-21 09:00:00,..,..
...
2019-09-21 17:00:00,..,..
</code></pre>
<p><strong>目前采取的步骤</p>
<p>为了提取上午9点到下午5点之间的行,我通过
使用矢量化数据操作提取小时、分钟和秒
所以输入数据帧将具有类似于</p>
<pre><code>Date Time, Number of seconds since midnight
2019-09-20 05:00:00,xxxx,..,..
2019-09-20 05:05:00,yyyy,..,..
...
2019-09-21,05:00:00,xxxx,..,..
2019-09-21, 05:05:00,yyyy,..,..
</code></pre>
<p>请注意,对于每天相同的时间,秒数将保持不变
现在我希望能在早上9点到下午5点提取所有的行</p>
<pre><code>df[(df['Number of seconds since midnight'] > (nseconds for 9 am from midnight)) & ((df['Number of seconds since midnight'] < (nseconds for 5 pm from midnight))
</code></pre>
<p>但是我只从最后一天上午9点到下午5点之间得到了行。
在我看来,这似乎是忽略了所有重复行与ehs相同的计算。你知道吗</p>
<p>有人能建议一个可能的解决方案,不迭代每一行,并使用矢量化的操作,因为数据库非常大</p>