2013-04-15 16 views
10

pandasは、をhtml tableに変換する有用なto_html()を提供します。 DataFrameにそれを読むための便利な機能がありますか?それは可能ではない一般的なケースではhtmlテーブルをpandasデータフレームに変換する方法

+1

をリリースread_htmlユーティリティは – root

+1

はまた、html' 'への変換のように、非可逆である...私はないと思うが、それは' lxml'から少し助けを借りて、あまりにも難しいことではありませんタイプ情報が失われているので、自分で指定する必要があります。とにかく 'df'が比較的シンプルな場合(例えば統一データ型の場合)、変換はほんの数行のコードで済むはずです。 – root

+0

パンダには、この問題を緩和しようとするタイプ推論メソッドがあり、かなり良い仕事をしています。 –

答えて

3

いますが、約あなたのテーブルの構造を知っていれば、あなたは可能性があり、このような何か:

# 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 

ます必要であればeval()を使用してMultiindex dfsまたは自動タイプ検出のために拡張することができます。

関連する問題