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

如何处理pandas read_html生成DataFrame的多余表头及无效行?

解决Fangraphs表格抓取后多余表头和无效行问题

问题分析

你抓取的表格存在两处无效内容:

  • 顶部第0行是分页信息(1 Page size: select 14 items in 1 pages),不属于数据表头
  • 底部最后一行是重复的分页控件行,无有效数据

解决方案

通过以下步骤清理数据:

  1. 将表格的第1行(原数据里的真实表头)设置为DataFrame的列名
  2. 截取从第2行开始到倒数第2行的有效数据(跳过顶部无效行和底部无效行)
  3. 重置索引,确保数据结构规整

完整代码

from pandas import read_html, set_option

# 目标URL
url = "https://www.fangraphs.com/leaders.aspx?pos=all&stats=bat&lg=all&qual=0&type=8&season=2022&month=1000&season1=2022&ind=0&team=0,ts&rost=0&age=0&filter=&players=0&startdate=2022-04-07&enddate=2022-04-07&page=1_50"

# 抓取表格
table_of_interest = read_html(url)[-2]

# 设置真实表头:将第1行作为列名
df = table_of_interest.copy()
df.columns = df.iloc[1]

# 截取有效数据:跳过前2行(第0行是分页信息,第1行是表头),去掉最后一行无效行
df = df.iloc[2:-1]

# 重置索引
df = df.reset_index(drop=True)

# 查看清理后的数据
print(df)

代码说明

  • df.columns = df.iloc[1]:把原表格中第1行的内容替换成DataFrame的列名,覆盖掉默认的索引列名
  • df.iloc[2:-1]:2:表示从第2行开始取数据(跳过前两行无效内容),:-1表示不取最后一行的无效分页行
  • reset_index(drop=True):重置索引,避免原索引混乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:57:32