2013-04-15 61 views
10

pandas提供了一個有用的to_html()來將DataFrame轉換爲html table。是否有任何有用的功能將其讀回DataFrame如何將html錶轉換爲pandas數據框

+1

我想不會,但它不應該與'一點點幫助太難lxml' ... – root

+1

此外,轉換成'html'是有損的,因爲類型信息丟失,因此您需要自己指定它。無論如何,如果'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或自動類型檢測。