Pandas读取网页表格后替换表头报错:'list'对象无'iloc'属性
问题解决:将网页表格第一行设为表头的正确姿势
错误原因
pd.read_html()返回的是DataFrame对象的列表,你把整个列表赋值给了df,之后直接对列表调用iloc肯定报错——列表根本没有iloc这个属性。你之前用df[0]能看到表格,说明目标表格是列表里的第一个DataFrame。
正确操作步骤
- 先从列表里取出真正的DataFrame对象
- 用第一行数据替换表头,再移除原表头行
- (可选)重置索引,避免索引从1开始的混乱
完整代码示例
import pandas as pd # 读取网页表格,得到DataFrame列表 df_list = pd.read_html('https://w3schools.com/python/python_ml_decision_tree.asp') # 取出第一个表格(你要处理的目标表格) df = df_list[0] # 设置表头:用第一行数据作为列名 df.columns = df.iloc[0] # 移除原来的表头行 df = df[1:] # 重置索引(可选,让索引从0开始) df = df.reset_index(drop=True) # 查看结果 df.head()
更简洁的写法
你也可以在读取时直接指定表头参数,一步到位:
df = pd.read_html('https://w3schools.com/python/python_ml_decision_tree.asp', header=0)[0]
header=0表示用表格的第一行作为表头,这样就不用手动处理了。
内容的提问来源于stack exchange,提问作者Mehedi Azad
相关产品推荐
相关产品推荐

