Панды: выравнивание таблиц, извлеченных из HTML - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть много таблиц, где read_html не совсем правильно читает таблицы.Например:

import pandas as pd

l = 'https://www.sec.gov/Archives/edgar/data/1045810/000104581018000047/nvda2018proxystatementsecf.htm'
df_list = pd.read_html(l)

df = df_list[85].dropna(how='all')
df = df.fillna('')

print df

Как мне еще обработать его, чтобы он правильно выстроился?или есть другой способ прочитать его правильно, чтобы начать с.

1 Ответ

0 голосов
/ 10 февраля 2019

Ваша проблема в том, что вы сталкиваетесь с ограничением панд read_html.

В таблице, которую вы пытаетесь проанализировать, определен "rowspan = 2", который выбрасывает read_html, как описано в этом выпуске

, одним из способов может быть написание собственного синтаксического анализаторакак описано здесь

Что, по собственным словам автора, является:

Суть того, что здесь происходит:

Сначала мы разберемсяHTML с использованием BeautifulSoup, поиск всех таблиц, затем всех строк в каждой таблице, затем каждой ячейки в каждой строке.Затем, когда мы зацикливаемся на каждой из этих ячеек, мы проверяем, есть ли какие-либо атрибуты colspan и rowspan, связанные с ячейкой - это говорит нам об измерениях ячейки.В терминах электронной таблицы вы можете подумать о значении числа строк в 2, соответствующем ячейке, объединяемой с ячейкой под ней.Информация colspan проста в использовании.Если мы зарегистрируем значение colspan больше 1, мы пропустим это количество столбцов, прежде чем начнем заполнять следующую ячейку.Информация о строках строк немного сложнее.Если мы зарегистрируем значение ряда строк больше 1, мы сохраним его в списке («skip_index»), где каждый элемент соответствует столбцу в нашей таблице.Когда цикл заполняет данные для каждой ячейки, он сначала проверяет, есть ли ненулевое значение в этом столбце skip_index;если это правда, пропускает этот столбец.С каждой итерацией строки мы увеличиваем каждый ненулевой элемент skip_index на -1, пока он не вернется к нулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...