2

pandas read_html 関数を使用して html テーブルをデータフレームにロードしていますが、ソース データに colspan=2 マージされたヘッダーがあるため失敗し、この AssertionError: 6 列が渡され、渡されたデータには 7 列がありました。

ヘッダー kwarg (header=None, header=['Code'...]) でさまざまなオプションを試しましたが、何も機能しないようです。

pandas read_html を使用してマージされた列を含むテーブルを解析および html する方法を知っている人はいますか?

4

2 に答える 2

5

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」からの引用です。

于 2013-11-05T15:34:47.597 に答える