2013-04-15 25 views
10

pandas, DataFrame'u html table'a dönüştürmek için to_html() kullanışlı bir sayfa sağlar. DataFrame'a geri okumak için kullanışlı bir işlev var mı? mümkün değildir genel durumdaBir html tablosunu pandalar veri çerçevesine dönüştürmek için

+1

Sanmıyorum, ama 'dan küçük bir yardımla çok zor olmamalı lxml' ... – root

+1

Ayrıca html'' dönüşüm kayıplı olan pandalar yayımlanan read_html yarar gibi Yazım bilgileri kaybolur, böylece kendiniz belirtmeniz gerekir. Her neyse, eğer 'df' nispeten basitse (örneğin tek tip veri türleri), dönüşüm sadece birkaç satırlık kod almalıdır. – root

+0

pandalar, bu sorunu hafifletmeye çalışan bazı tür çıkarım yöntemlerine sahiptir ve oldukça iyi bir iş çıkarırlar. –

cevap

3

ancak yaklaşık sizin tablonun yapısını biliyorsanız böyle bir şey olabilir:

# 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 

Şimdi html ayrıştırmak ve yeniden:

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 

You Gerekirse, MultiIDx dfs veya eval() kullanarak otomatik tip algılama için genişletebilir.

İlgili konular