使用BeautifulSoup从表的前两列中提取日期,并将其排列在Pandas数据帧中,不重复



这是我前面问题的后续问题,即使用BeautifulSoup从表中提取tds,并将它们与表id 一起排列在Pandas数据帧中

我在解决方案中遇到了异常行为:

  1. 由于存在第三列,行条目为空,遗憾的是,我在上述问题中忽略了这一点
  2. 在我上述问题中创建的Pandas数据帧中出现重复记录

我提取了以下html代码:

<table id=table1>
<thead>
<tr class="table_columns">
<th id="header1">
"Column 1 Title"
</th>
<th id="header2">
"Column 2 Title"
</th>
<th id="header3">
<span></span>
</th>
</tr>
</thead>

<tbody>
<tr class="evenRow">
<td headers="_header1">firstrowcolumn1data</td>
<td headers="_header2">firstrowcolumn2data</td>
<td headers="_header3">
<a>
<img src="image1">
</a>
</td>
</tr>
<tr class="oddRow">
<td headers="_header1">secondrowcolumn1data</td>
<td headers="_header2">secondrowcolumn2data</td>
<td headers="_header3">
<a>
<img src="image1">
</a>
</tr>
</tbody>
</table>

我需要提取表的数据和id(表1(,然后将它们排列成Pandas数据帧,类似于以下内容:

id 表数据
表1 第一行列1数据
表1 firstrowcolumn2data
表1 secondrowcolumn1数据
表1 secondrowcolumn2data

试试这个:

df = df.assign(**{'table data': df['table data'].str.replace(r'^s+$', '', regex=True)}).replace({None:np.nan,'':np.nan,'None':np.nan}).dropna()

输出:

>>> df
id            table-data
6   table1  firstrowcolumn1data 
7   table1  firstrowcolumn2data 
9   table1  secondrowcolumn1data
10  table1  secondrowcolumn2data

最新更新