我正在使用 pandas read_html 函数将 html 表加载到数据框中,但是它失败了,因为 source data有一个 colspan=2 合并标题,导致此断言错误:传递了 6 列,传递的数据有 7 列。
我已经尝试了标题 kwarg 的各种选项(header=None、header=['Code'...]),但似乎没有任何效果。
有谁知道使用 pandas read_html 解析和合并列的 html 表的方法吗?
最佳答案
如果您不坚持使用 pandas 中的 read_html,则此代码可以完成这项工作:
import pandas as pd
from lxml.html import parse
from urllib2 import urlopen
from pandas.io.parsers import TextParser
def _unpack(row, kind='td'):
elts = row.findall('.//%s' % kind)
return [val.text_content() for val in elts]
def parse_options_data(table):
rows = table.findall('.//tr')
header = _unpack(rows[0], kind='th')
data = [_unpack(r) for r in rows[1:]]
return TextParser(data, names=header).get_chunk()
parsed = parse(urlopen('http://www.bmfbovespa.com.br/en-us/intros/Limits-and-Haircuts-for-accepting-stocks-as-collateral.aspx?idioma=en-us'))
doc = parsed.getroot()
tables = doc.findall('.//table')
table = parse_options_data(tables[0])
这摘自 Wes McKinney 的《Python for Data Analysis》一书。
关于python - pandas read_html 函数 colspan=2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19791527/