使用pd.read_html解析维基表格后调用head()报AttributeError求助
解决
pd.read_html返回列表导致AttributeError: 'list' object has no attribute 'head'的问题 问题本质
pd.read_html()方法始终返回一个包含DataFrame对象的列表——即便你通过match参数精准匹配到唯一表格,它也会把这个表格放在列表中返回。直接对列表调用.head()方法会触发AttributeError,因为Python列表没有这个DataFrame专属方法。
解决方案
提取列表中的目标DataFrame(通常是索引为0的元素,即match匹配到的第一个表格),再调用.head():
修改后的完整代码
import pandas as pd url="https://uk.wikipedia.org/wiki/%D0%9D%D0%B0%D1%81%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F_%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D0%B8#%D0%9D%D0%B0%D1%80%D0%BE%D0%B4%D0%B6%D1%83%D0%B2%D0%B0%D0%BD%D1%96%D1%81%D1%82%D1%8C" # 直接提取列表中的第一个DataFrame df = pd.read_html(url, match="Коефіцієнт народжуваності в регіонах України", thousands=".", decimal=",")[0] # 正常查看表格头部 df.head()
备选写法(保留原变量名)
如果想保留原始列表变量,可分两步处理:
import pandas as pd url="https://uk.wikipedia.org/wiki/%D0%9D%D0%B0%D1%81%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F_%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D0%B8#%D0%9D%D0%B0%D1%80%D0%BE%D0%B4%D0%B6%D1%83%D0%B2%D0%B0%D0%BD%D1%96%D1%81%D1%82%D1%8C" syte = pd.read_html(url, match="Коефіцієнт народжуваності в регіонах України", thousands=".", decimal=",") # 提取列表中的第一个DataFrame syte_df = syte[0] # 调用head() syte_df.head()
额外提示
若不确定匹配到多少个表格,可通过len(syte)查看列表长度,再根据索引选择对应的DataFrame。
内容的提问来源于stack exchange,提问作者Angelika
相关产品推荐
相关产品推荐

