python - pandas read_html 函数 colspan=2

标签 python pandas

我正在使用 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/

相关文章:

python - Keras try save and load model error You are trying to load a weight file containing 16 layers into a model with 0 层数

python - 为什么我们需要使用rabbitmq

python - 计数值,与 Pandas 保持重复

python - 基于某些 if 并涉及行操作创建新的 pandas 列

pandas - 在 Pandas 中连接系列丢弃重叠索引

python-3.x - Pandas 分组依据和条件比率

python - 将默认变量传递给 matplotlib

python - Tensorflow 预测输出类别

python - 使用 get_or_create 的正确方法?

python - 学习影响给定列表值的两个数据帧之间关系的最佳方法是什么?