You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas.read_html()时如何避免将含<th>的行识别为表头?

解决方案

pd.read_html默认会自动识别<thead>标签内的内容作为列名,即使指定header=None也不会将<thead>内的内容视为普通数据行,可通过以下两种方法实现需求:

方法1:读取后手动拼接表头行

拿到读取结果后,将当前列名作为第一行插入数据,再重置列名即可:

import pandas as pd

# read_html返回的是页面匹配到的所有表格组成的列表,取第一个表格
df = pd.read_html(html, header=None)[0]

# 将当前列名转为普通数据行
header_row = pd.DataFrame([df.columns.to_list()], columns=df.columns)
# 把表头行拼接到原表格的最顶部
df = pd.concat([header_row, df], ignore_index=True)
# 重置列名为默认的0、1、2
df.columns = range(df.shape[1])

执行后输出结果如下(注:你给出的预期结果中第0行第2列的header 2属于笔误,实际应为header 3):

0         1         2
0  header 1  header 2  header 3
1       001         A         1
2       002         B         2
3       003         C         3

方法2:预处理HTML移除thead标签

可以先把HTML文本中的<thead>和</thead>标记删除,让pandas把所有<tr>行都识别为普通数据行:

import pandas as pd

# 移除thead标签标记
processed_html = html.replace('<thead>', '').replace('</thead>', '')
# 直接读取处理后的HTML即可
df = pd.read_html(processed_html, header=None)[0]

该方法无需后续调整表格结构,直接就能得到目标结果。


内容的提问来源于stack exchange,提问作者Horatio Caine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 22:24:02