Как определить даты, когда выполняется определенное условие? [На python]

#python #pandas #database

Вопрос:

У меня есть фрейм данных с минимальными и максимальными ценами за каждый час дня. Продолжительность набора данных составляет около одного года. Я приложил пример. Вы можете запустить фрагмент кода для создания таблицы. Извините, я новичок в Stackoverflow, я еще не знаю, как вставлять таблицы сюда.

Я хочу выделить даты, когда потребляется(минимальная) цена Мне нужен вывод, состоящий из всех дат (со всеми 24 часами), в которых выполняется условие 1.

 <!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> 

Комментарии:

1. можете ли вы рассказать мне о результатах type(df.loc[0,'Date (CET)'])

2. Результат такой : панды. _libs.tslibs.метки времени. Отметка времени. Я использую функцию для преобразования столбца в дату и время

3. После преобразования в дату и время формат будет гггг-мм-дд ЧЧ:ММ:СС

4. @AnuragDabas Я все понял! Я просто выделил даты для условия, listt а затем использовал dfinal = df[df['Date (CET)'].dt.date.isin(listt)] их для получения этих дат

5. Отлично…Рад за вас, что вы получили решение своего вопроса 🙂

Ответ №1:

Вы можете использовать эту библиотеку

 from lxml import html
 

Используемый API для записи в HTML , XML , CSS
Вы можете получить информацию с сайта в соответствии с названием класса или идеей, используя (xpath)

Пример:

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

Затем вы можете отфильтровать информацию с помощью массива ( time[0] или time[0:4] )
Или вы можете сохранить информацию в базе данных с помощью (SQL), а затем упорядочить их.

Также после сохранения информации вы можете с

 import time

time.time()
 

Получите и отсортируйте последнюю дату и время, а затем сравните их с вашими данными.

Комментарии:

1. К вашему сведению, их вопрос касается фреймов данных pandas. Они помещают образцы данных в таблицу html, но на самом деле вопрос не в разборе html.