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 源代码中没有 tables,它将返回错误并且永远不会生成空列表。

【讨论】:

谢谢!确实 df 是一个数据框。但是,当我尝试 df Python 上的 .head、.tail 和 .index 参数时,返回了错误消息。我该如何纠正这个问题? @AlexanderKonstantinidis 很有趣,df.taildf.headdf.index 为我工作。您遇到了什么错误? AttributeError:“DataFrame”对象没有属性“heads”,AttributeError:“DataFrame”对象没有属性“tails”,TypeError:“Index”对象不可调用 @AlexanderKonstantinidis 啊,是tailheadindex——没有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:禁止”

Python 读取HTML表格 pd.read_html()

将 pandas 数据框列导入为字符串而不是 int

pd.read_html-ValueError:未找到表

另类爬取表格数据

pandas 没有属性 read_html 树莓派