pandas парсинг htlm таблицы

Есть HTML файл из таблицами. Их приблизительно 100шт. и у всех часто одинаковые значения. Нестатическими являются значения во втором и первом столбце всех таблиц (это те колонки, с которыми я буду работать в будущем):

скрин

Вот это HTML код любой строчки в таблице. Они все одинаковы, для примера взята 1 строчка из первой таблицы на скрине сверху:

<tr>
<td class="randomclass">1project</td>
<td class="randomclass">&nbsp;<font color="#00875a"><b>ID1</b></font></td>
<td class="randomclass"><font color="#00875a">&nbsp;<b>EMPTY_ROW</b></font></td>
<td class="randomclass">EMPTY_ROW</td>
</tr>

Я ищу метод, с помощью которого я:

  1. вытащу из всех таблиц только зеленые значения (игнорируя ID_TEMP1, ID_TEMP2, ID_TEMP3)
  2. смогу игнорировать маленькие таблицы с "ID_Review" значением.

Вот мой код:

import pandas as pd  

cons = pd.DataFrame() 
all_HOs = pd.DataFrame() 
ids_cons = pd.DataFrame() 
df_list = pd.read_html('Production Issue Tracking.html', match='ID') 
df_list2 = pd.read_html('Production Issue Tracking.html', match='Attachments') 
df_list3 = pd.read_html('Production Issue Tracking.html', match='number') 
df3 = pd.concat(df_list3, axis=1) 
df3 = df3.iloc[:, ::-1] 
df = pd.concat(df_list, axis=1) 
df2 = pd.concat(df_list2, axis=1) 
 
df_rev = df.iloc[:, ::-1] 
df2 = df2.iloc[:, ::-1] 
df_rev.columns = df_rev.iloc[0] 
 
lc = df_rev[["STATIC"]] 
lc = pd.DataFrame({"STATIC: df_rev["Review"].values.T.ravel(),}) 
lc = lc[lc['STATIC'] != 'STATIC'] 
lc = lc[lc['STATIC'] != 'Review']  
 
 
sup = df_rev[["IDs"]] 
sup = pd.DataFrame({"IDs": df_rev["IDs"].values.T.ravel(),}) 
sup = sup[sup['IDs'] != 'IDs'] 

lc_sup = pd.concat([lc, sup], axis=1) 

lc_sup DF в екселе:

EMPTY_ROW   EMPTY_ROW
1project    ID1
2project    ID2
3project    ID3 ID_TEMP1
4project    ID4
5project    ID5
6project    ID6
7project    ID7 ID_TEMP2
8project    ID8
9project    ID9
10project   ID10 ID_TEMP3
Project1    
Project2    
Project3    
Project4    
Project5    
Project6    
Project7    
Project8    
Project9    
Project10   

По идее, вот эта строчка:

lc = lc[lc['STATIC'] != 'ID_Review']  

должна убирать ненужные строчки в lc_sup DF, но проблема в том, что значение в этой строчке почти всегда разные, и мне никак не получается игнорировать их все. В примере сверху у меня получилось игнорировать "ID_Review", но если это будет любое другое значение, то оно появится как новая строчка в DF.

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


Ответы (0 шт):