首页 > 解决方案 > 如何识别满足特定条件的日期?[在蟒蛇中]

问题描述

我有一个数据框,其中包含一天中每个小时的最低、最高价格。数据集的持续时间约为一年。我附上了一个例子。您可以运行代码片段来生成表。抱歉,我是 Stackoverflow 的新手,我还不知道如何在此处插入表格。

我想隔离消费(最低)价格 < 0 至少 4 次的日期,该日期在 9 小时到 16 小时之间{让我们将此条件命名为 1}。我想要一个包含满足条件 1 的所有日期(所有 24 小时)的输出。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title></title>
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
body {
  margin: 5px 5px 5px 5px;
  background-color: #ffffff;
}
/* ========== Text Styles ========== */
hr { color: #000000}
body, table /* Normal text */
{
 font-size: 10pt;
 font-family: 'Courier New';
 font-style: normal;
 font-weight: normal;
 color: #000000;
 text-decoration: none;
}
span.rvts1 /* Heading */
{
 font-family: 'Arial';
 font-weight: bold;
 color: #0000ff;
}
span.rvts2 /* Subheading */
{
 font-family: 'Arial';
 font-weight: bold;
 color: #000080;
}
span.rvts3 /* Keywords */
{
 font-family: 'Arial';
 font-style: italic;
 color: #800000;
}
a.rvts4, span.rvts4 /* Jump 1 */
{
 color: #008000;
 text-decoration: underline;
}
a.rvts5, span.rvts5 /* Jump 2 */
{
 font-family: 'Arial';
 color: #008000;
 text-decoration: underline;
}
/* ========== Para Styles ========== */
p,ul,ol /* Paragraph Style */
{
 text-align: left;
 text-indent: 0px;
 padding: 0px 0px 0px 0px;
 margin: 0px 0px 0px 0px;
}
.rvps1 /* Centered */
{
 text-align: center;
}
--></style>
</head>
<body>

<p><br></p>
<div><table width="100%" border=1 cellpadding=1 cellspacing=2 style="background-color: #ffffff;">
<tr valign=top>
<td style="border-style: inset;">
<p><span class=rvts1>Date (CET)</span></p>
</td>
<td style="border-style: inset;">
<p><span class=rvts1>Consume (Min)</span></p>
</td>
<td style="border-style: inset;">
<p><span class=rvts1>Feed (Max)</span></p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;"><br>
</td>
<td style="border-style: inset;">
<p>EUR</p>
</td>
<td style="border-style: inset;">
<p>EUR</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[24/03/2021 11:00]</p>
</td>
<td style="border-style: inset;">
<p>-159.02</p>
</td>
<td style="border-style: inset;">
<p>-159.02</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[24/03/2021 12:00]</p>
</td>
<td style="border-style: inset;">
<p>-159</p>
</td>
<td style="border-style: inset;">
<p>-53.89</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[24/03/2021 13:00]</p>
</td>
<td style="border-style: inset;">
<p>-0.33</p>
</td>
<td style="border-style: inset;">
<p>44.7</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[24/03/2021 14:00]</p>
</td>
<td style="border-style: inset;">
<p>-150.32</p>
</td>
<td style="border-style: inset;">
<p>44.7</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[24/03/2021 15:00]</p>
</td>
<td style="border-style: inset;">
<p>-3.9</p>
</td>
<td style="border-style: inset;">
<p>39.89</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[24/03/2021 16:00]</p>
</td>
<td style="border-style: inset;">
<p>12.01</p>
</td>
<td style="border-style: inset;">
<p>52.2</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[24/03/2021 17:00]</p>
</td>
<td style="border-style: inset;">
<p>34.31</p>
</td>
<td style="border-style: inset;">
<p>73.03</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[24/03/2021 18:00]</p>
</td>
<td style="border-style: inset;">
<p>-74.57</p>
</td>
<td style="border-style: inset;">
<p>54.21</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[24/03/2021 19:00]</p>
</td>
<td style="border-style: inset;">
<p>53.32</p>
</td>
<td style="border-style: inset;">
<p>64</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[24/03/2021 20:00]</p>
</td>
<td style="border-style: inset;">
<p>36.89</p>
</td>
<td style="border-style: inset;">
<p>423.58</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[24/03/2021 21:00]</p>
</td>
<td style="border-style: inset;">
<p>39.89</p>
</td>
<td style="border-style: inset;">
<p>54.14</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[24/03/2021 22:00]</p>
</td>
<td style="border-style: inset;">
<p>33.89</p>
</td>
<td style="border-style: inset;">
<p>53.97</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[24/03/2021 23:00]</p>
</td>
<td style="border-style: inset;">
<p>33</p>
</td>
<td style="border-style: inset;">
<p>53.73</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[25/03/2021 00:00]</p>
</td>
<td style="border-style: inset;">
<p>42.72</p>
</td>
<td style="border-style: inset;">
<p>45.84</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[25/03/2021 01:00]</p>
</td>
<td style="border-style: inset;">
<p>42.98</p>
</td>
<td style="border-style: inset;">
<p>46.58</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[25/03/2021 02:00]</p>
</td>
<td style="border-style: inset;">
<p>45.82</p>
</td>
<td style="border-style: inset;">
<p>48.1</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[25/03/2021 03:00]</p>
</td>
<td style="border-style: inset;">
<p>45.82</p>
</td>
<td style="border-style: inset;">
<p>51.27</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[25/03/2021 04:00]</p>
</td>
<td style="border-style: inset;">
<p>45.81</p>
</td>
<td style="border-style: inset;">
<p>49.51</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[25/03/2021 05:00]</p>
</td>
<td style="border-style: inset;">
<p>45.47</p>
</td>
<td style="border-style: inset;">
<p>53.81</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[25/03/2021 06:00]</p>
</td>
<td style="border-style: inset;">
<p>38.57</p>
</td>
<td style="border-style: inset;">
<p>53.42</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[25/03/2021 07:00]</p>
</td>
<td style="border-style: inset;">
<p>36.44</p>
</td>
<td style="border-style: inset;">
<p>54.34</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[25/03/2021 08:00]</p>
</td>
<td style="border-style: inset;">
<p>36.44</p>
</td>
<td style="border-style: inset;">
<p>40.51</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[25/03/2021 09:00]</p>
</td>
<td style="border-style: inset;">
<p>39.44</p>
</td>
<td style="border-style: inset;">
<p>61.15</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[25/03/2021 10:00]</p>
</td>
<td style="border-style: inset;">
<p>44.46</p>
</td>
<td style="border-style: inset;">
<p>87.73</p>
</td>
</tr>
<tr valign=top>
<td style="border-style: inset;">
<p>[25/03/2021 11:00]</p>
</td>
<td style="border-style: inset;">
<p>44.29</p>
</td>
<td style="border-style: inset;">
<p>45.02</p>
</td>
</tr>
</table>
</div>

</body></html>

标签: pythonpandasdatabase

解决方案


你可以使用这个库

from lxml import html

用于编写 HTML、XML、CSS 的 API 您可以使用 (xpath) 根据类名或想法从站点获取信息

例子:

time = tree.xpath('//date/text()')

然后你可以借助数组(time[0]time[0:4])过滤信息,或者你可以通过(SQL)将信息保存在数据库中,然后排列它们。

同样在保存信息后,您可以使用

import time

time.time()

获取并排序最新的日期和时间,然后与您的数据进行比较。


推荐阅读