如何将pd.read_html返回的列表转换为Pandas DataFrame?
解决Pandas read_html返回列表而非DataFrame的问题
嘿,这个问题我碰到过好多次啦!其实pd.read_html()本身的设计就是返回一个包含DataFrame的列表——哪怕页面里只有一个表格,它也会把这个表格包装成列表的唯一元素返回给你。
你现在的代码里,df = pd.read_html(str(table))得到的是列表,只需要做一步简单的索引提取,就能拿到你想要的DataFrame了:
修正后的完整代码
import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("http://www.nationmaster.com/country-info/stats/Media/Internet-users") soup = BeautifulSoup(res.content,'html5lib') table = soup.find_all('table')[0] # 提取列表的第一个元素,得到目标DataFrame df = pd.read_html(str(table))[0] df.head()
额外小提示
- 如果你不确定列表里有几个表格,可以先打印
len(pd.read_html(str(table)))看看数量,再根据需求提取对应索引的元素 - 因为你已经用BeautifulSoup精准定位到了第一个表格,所以直接取索引
[0]就完全没问题啦
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

