2016-11-01 2 views
0

Я пытаюсь разобрать таблицы веб-сайта, и я все еще не знаю. Для каждой ссылки к SS добавляется только вторая таблица/dataframe. Существует несколько ссылок, поэтому для этого требуется цикл while. Используя то, что мало я только мог найти, я просто застрял с этим, который Im уверен, что полностью выключен:Не удается получить Pandas для concat/append

import pandas as pd 
from pandas import ExcelWriter 
a=1 
alist = [] 
writer = ExcelWriter('name.xlsx') 
def dffunc(): 
    dfs = pd.read_html('http://websitepath{}.htm'.format(a)) 
    df = dfs[1] 
    alist.append(df,ignore_index=True) 
    alist = pd.concat(df, axis=0) 


while a<9: 
    dffunc() 
    a+=1 
alist.to_excel(writer, index=False) 
writer.save() 

ответ

0

DF = ДФС [1] занимает вторую таблицу в списке. Это то, что вы хотите?

0

старый:

df = dfs[1] 
alist.append(df,ignore_index=True) 
alist = pd.concat(df, axis=0) 
  • Вы Добавляя 2-й таблицы в коллекции Dfs глобальной ALIST
  • Вы назначая 2-й таблицы в коллекции Dfs к ALIST, отменяя все предыдущие шаги
  • Работа с глобальным var, который записывается в файл один раз в конце цикла, поражает цель вашего цикла, заданного второй пулей; крен будет только когда-либо принимать значение 2-й таблицы в последнем запросе при записи в файл

новым:

import pandas as pd 
from pandas import ExcelWriter 

writer = ExcelWriter('name.xlsx') 
writer_kwargs = {'index': False} 

A = 9 

def dffunc(a): 
    dfs = pd.read_html('http://websitepath{}.htm'.format(a)) 
    return pd.concat(dfs, axis=0) 

def dfhandler(df, writer, **kwargs): 
    df.to_excel(writer, sheet_name=a, **kwargs) 

for a in xrange(1, A): 
    dfhandler(dffunc(a), writer, **writer_kwargs) 

writer.save() 
+0

Этого код не работает для меня. Хотя я согласен, есть проблемы с охватом, которые я не уверен, как решить, многие из кодов - это hodge podge из метода, описанного другими, и с моего кода. Благодарим вас за помощь. – Persf