Как преобразовать таблицу html в pandas dataframe

pandas предоставляет полезный to_html() для преобразования DataFrame в html table. Есть ли полезная функция, чтобы прочитать ее обратно в DataFrame?

Ответ 1

read_html утилита, выпущенная в pandas 0.12

Ответ 2

В общем случае это невозможно, но если вы примерно знаете структуру своей таблицы, вы можете что-то вроде этого:

# Create a test df:
>>> df = DataFrame(np.random.rand(4,5), columns = list('abcde'))
>>> df
     a           b           c           d           e
0    0.675006    0.230464    0.386991    0.422778    0.657711
1    0.250519    0.184570    0.470301    0.811388    0.762004
2    0.363777    0.715686    0.272506    0.124069    0.045023
3    0.657702    0.783069    0.473232    0.592722    0.855030

Теперь проанализируйте html и восстановите:

from pyquery import PyQuery as pq

d = pq(df.to_html())
columns = d('thead tr').eq(0).text().split()
n_rows = len(d('tbody tr'))
values = np.array(d('tbody tr td').text().split(), dtype=float).reshape(n_rows, len(columns))
>>> DataFrame(values, columns=columns)

     a           b           c           d           e
0    0.675006    0.230464    0.386991    0.422778    0.657711
1    0.250519    0.184570    0.470301    0.811388    0.762004
2    0.363777    0.715686    0.272506    0.124069    0.045023
3    0.657702    0.783069    0.473232    0.592722    0.855030

Вы можете расширить его для обнаружения файлов MultiDex или автоматического типа с помощью eval(), если это необходимо.