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

使用Pandas从HTML文件导入数据集后提取指定列触发TypeError的问题求助

解决pandas从HTML读取数据后提取列的TypeError问题

Hey,我看你遇到的问题其实是对pd.read_html()的返回值理解有点偏差,咱们来一步步解决它:

问题根源

pd.read_html()这个函数返回的不是单个DataFrame,而是DataFrame的列表——因为HTML页面里可能存在多个表格,哪怕你的文件里只有一个表格,它也会把这个表格包裹在列表里返回。你直接用df['Latest Data']去索引列表,自然会触发TypeError: list indices must be integers or slices, not str错误,因为列表只能用整数索引或者切片,不能用字符串列名。

解决方案

你只需要先从列表中取出目标DataFrame,再用列名提取数据就行,步骤如下:

  1. 先获取HTML里的所有表格(返回列表)
  2. 取出列表中的第一个(也是你数据里唯一的)DataFrame
  3. 正常用列名提取所需数据

修改后的完整代码如下:

import requests
import os
import pandas as pd
from bs4 import BeautifulSoup

# 读取HTML文件,得到包含所有表格的DataFrame列表
df_list = pd.read_html(os.path.expanduser("~/Documents/HTMLSpider/HTMLSpider_test/spotgamma.html"))
# 取出列表中的第一个表格(如果有多个表格,你可以用len(df_list)查看数量,再选对应索引)
df = df_list[0]
# 现在可以正常提取'Latest Data'列了
print(df['Latest Data'])

额外小贴士

如果不确定哪个表格是你要的,可以遍历列表打印每个表格的结构,快速定位:

for idx, table in enumerate(df_list):
    print(f"=== 表格{idx} ===")
    print("列名:", table.columns.tolist())
    print(table.head(), "\n")

这样你就能精准找到目标表格的索引,避免出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 16:07:38