Python Pandas中删除DataFrame多行及前12行删除报错求助
问题排查与解决方法
报错原因
pd.read_html()返回值类型错误:该函数读取HTML表格后,返回的是包含一个或多个DataFrame的列表,而非单个DataFrame对象。直接对列表调用drop方法,自然会抛出'list' object has no attribute 'drop'的错误。- URL写法错误:代码中
url=Exp01.html未用字符串包裹,会被Python当作变量解析,运行时触发NameError。 - 删除逻辑与需求不符:你想删除前12行,但代码中写的是删除索引为
'1'、'12'的行,既不符合需求,且若索引为整数类型,用字符串指定索引也会无效。 inplace=True的误用:使用inplace=True时,方法会直接修改原对象并返回None,将其赋值给df会导致df变为None,后续无法正常操作。
解决步骤与修正代码
- 从
pd.read_html()返回的列表中提取目标DataFrame(若HTML仅含一个表格,取索引0的元素)。 - 修正URL的字符串写法。
- 用正确方式删除前12行(推荐
iloc切片,简洁高效)。 - 避免将
inplace=True的返回值赋值给变量。
修正后的代码:
import pandas as pd # 正确指定HTML文件路径(字符串包裹) url = 'Exp01.html' # 读取HTML表格,提取第一个DataFrame df = pd.read_html(url)[0] # 删除前12行,保留第13行及以后的数据 df = df.iloc[12:] # 也可以用drop方法实现:df = df.drop(df.index[:12]) print(df)
补充说明
如果你的HTML文件中包含多个表格,需要先确认目标表格的位置,再调整索引提取,比如取第二个表格就用pd.read_html(url)[1]。
内容的提问来源于stack exchange,提问作者Va SA
相关产品推荐
相关产品推荐

