这是我前面问题的后续问题,即使用BeautifulSoup从表中提取tds,并将它们与表id 一起排列在Pandas数据帧中
我在解决方案中遇到了异常行为:
- 由于存在第三列,行条目为空,遗憾的是,我在上述问题中忽略了这一点
- 在我上述问题中创建的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