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

使用Pandas爬取UFC赛事表格时缺失关键列的问题求助

问题分析与解决方法

原因

  1. 你选中的tables[2]并非赛事结果表格,而是页面里的奖金统计类表格,自然没有对手、终结方式、比赛回合这些核心列。
  2. 就算选对了结果表格,维基赛事表用了HTML合并单元格(rowspan/colspan),默认爬取会生成多级表头,容易让你误以为关键列缺失。

解决步骤

1. 定位正确的表格索引

先遍历所有爬取到的表格,通过表头找到目标结果表:

import pandas as pd

url = 'https://en.wikipedia.org/wiki/UFC_168'
tables = pd.read_html(url)

# 逐个打印表格列名,找到包含选手、对手等信息的表格
for idx, table in enumerate(tables):
    print(f"表格{idx}的列:{list(table.columns)}")

运行后会发现,UFC168的主赛结果表格是tables[3],副赛结果表格是tables[4]。

2. 扁平化多级表头

维基的结果表格多为多级表头,直接读取会出现列名混乱,需要合并表头:

# 获取主赛结果表格
main_card = tables[3]
# 把多级表头合并为单个清晰的列名
main_card.columns = [' '.join(col).strip() for col in main_card.columns.values]
# 查看完整数据,对手、终结方式、回合列都会显示出来
print(main_card)

3. 清理无效数据

如果表格里有合并单元格生成的空行/空值,用Pandas简单清理即可:

# 删除全空的行
cleaned_table = main_card.dropna(how='all')
# 重置索引
cleaned_table = cleaned_table.reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 05:07:17