pd.read_html() 导入列表而不是数据框
Posted
技术标签:
【中文标题】pd.read_html() 导入列表而不是数据框【英文标题】:pd.read_html() imports a list rather than a dataframe 【发布时间】:2017-02-04 06:33:33 【问题描述】:我使用pd.read_html()
从网页导入表格,但没有将数据结构化为数据框,Python 将其作为列表导入。如何将数据作为数据框导入?谢谢!
代码如下:
import pandas as pd
import html5lib
url = 'http://www.fdic.gov/bank/individual/failed/banklist.html'
dfs = pd.read_html(url)
type(dfs)
Out[1]: list
【问题讨论】:
【参考方案1】:.read_html()
生成一个数据框列表(HTML 源代码中可能有多个表),通过索引获取所需的一个。在您的情况下,只有一个数据框:
dfs = pd.read_html(url)
df = dfs[0]
print(df)
请注意,如果 HTML 源代码中没有 table
s,它将返回错误并且永远不会生成空列表。
【讨论】:
谢谢!确实 df 是一个数据框。但是,当我尝试 df Python 上的 .head、.tail 和 .index 参数时,返回了错误消息。我该如何纠正这个问题? @AlexanderKonstantinidis 很有趣,df.tail
,df.head
,df.index
为我工作。您遇到了什么错误?
AttributeError:“DataFrame”对象没有属性“heads”,AttributeError:“DataFrame”对象没有属性“tails”,TypeError:“Index”对象不可调用
@AlexanderKonstantinidis 啊,是tail
、head
和index
——没有s
前缀也没有()
(这些不是方法)。【参考方案2】:
import pandas as pd
import html5lib
url = 'http://www.fdic.gov/bank/individual/failed/banklist.html'
dfs = pd.read_html(url)
df = pd.concat(dfs)
df
【讨论】:
这对我很有帮助。解决了将表格抓取为列表的问题,然后将该列表转换为数据框以上是关于pd.read_html() 导入列表而不是数据框的主要内容,如果未能解决你的问题,请参考以下文章
Pandas pd.read_html() 函数给了我“HTTP 错误 403:禁止”