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

使用pd.read_html获取指定网站表格转DataFrame时仅显示首行元素的问题求助

解决pd.read_html转DataFrame显示异常及多表格处理方案

先帮你理清问题根源:pd.read_html()本身就会返回DataFrame对象的列表,你之前先转成普通列表再重新转DataFrame的操作,反而容易破坏数据结构,加上Pandas默认的显示截断机制,才导致了异常输出。下面一步步给你解决:

1. 正确获取目标表格

按标准流程读取页面中的所有表格,不需要额外转列表:

import pandas as pd

# 目标页面URL
url = "https://www.statbunker.com/competitions/FantasyFootballPlayersStats?comp_id=556"

# 直接读取页面所有表格,返回DataFrame组成的列表
table_list = pd.read_html(url)

# 先确认页面里有多少个表格,方便定位你要的620×20表格
print(f"页面中总共找到 {len(table_list)} 个表格")

你需要的表格应该是列表里的某个元素,比如第1个表格(索引为0),直接赋值即可:

BPL20162017 = table_list[0]

2. 解决显示截断问题

你说只显示首行5个结果,这是Pandas默认的显示限制导致的。配置全局参数关闭截断就能看到完整表格:

# 配置Pandas显示所有列、行,取消宽度限制
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.width', None)
pd.set_option('display.max_colwidth', None)

# 现在再打印就能看到完整的620×20表格了
print(BPL20162017)

3. 添加更多表格的处理

如果是同一个页面的其他表格,直接从table_list里取对应索引的DataFrame就行:

# 示例:取出页面第2个表格(索引1)
extra_table_1 = table_list[1]
# 取出页面第3个表格(索引2)
extra_table_2 = table_list[2]

如果是该网站其他页面的表格,重复pd.read_html()流程即可,之后可以根据需求合并表格(比如结构一致用pd.concat(),有关联字段用pd.merge()):

# 示例:读取另一个页面的表格并合并
another_url = "https://www.statbunker.com/xxx/xxx"  # 替换为目标页面URL
another_table_list = pd.read_html(another_url)
another_df = another_table_list[0]

# 合并两个结构一致的表格
combined_df = pd.concat([BPL20162017, another_df], ignore_index=True)

复盘你之前的问题

你之前把表格转成普通列表再转DataFrame的操作,相当于把原DataFrame的每行数据拆成了列表元素,再转DF时结构被完全打乱,才出现了异常输出。直接使用pd.read_html()返回的DataFrame对象才是正确的打开方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:08:19