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

如何拆分pandas read_html返回的多级索引DataFrame提取NFL赛事数据

解决方案

通过调整pd.read_html的传入参数,再搭配简单的列名处理即可去掉多级索引,无需自行解析表格文本:

调整后的代码

import undetected_chromedriver.v2 as uc
from selenium.webdriver.common.by import By
import pandas as pd

driver = uc.Chrome()
driver.get("https://www.oddsportal.com/american-football/usa/nfl/")

table = driver.find_element(By.XPATH, '//*[@id="tournamentTable"]').get_attribute('outerHTML')

# 调整读取参数,避免生成多级索引结构
df = pd.read_html(
    table,
    header=0,  # 明确指定表格第一行作为表头,避免pandas自动识别多行为表头
    index_col=False,  # 禁止将首列识别为行索引
    flavor='bs4'
)[0]

# 若仍存在多级列名,一键转为单层结构
if isinstance(df.columns, pd.MultiIndex):
    # 这里直接取多级列的最后一级作为列名,也可以根据需要调整为拼接所有层级内容
    df.columns = [col[-1].strip() for col in df.columns]

参数说明

  • header=0:强制以表格第一行作为表头基准,是避免生成多级列索引最核心的参数
  • index_col=False:关闭pandas自动识别行索引的逻辑,避免生成多级行索引
  • flavor='bs4':指定用BeautifulSoup作为解析器,对这类不规则网页表格的兼容性更好

处理完成后即可得到单层结构的DataFrame,你可以直接在此基础上做列重命名、队伍字段拆分、日期填充等后续处理即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:18:01