2016-12-19 14 views
2

私はファンタジーのフットボールの情報をウェブサイトでスクラップし、Excelファイルに書き込むこの機能に取り組んでいます。最終的には、Excelワークブック内の別のシートに毎週の情報を載せたいと思っています。ループを使用してDataframe PandasでExcelシートを作成

次のコードは、Excelワークブックに書き込むまで完全に機能します。ワークブックはわずか17週のデータを持っています。パンダExcelWriterは毎回シートを追加したいときに毎回そのシートを上書きするようです。

pandas ExcelWriterでループを含むシートを作成することについてオンラインで何かを見つけることができなかったので、私が望むように行うことができるかどうかは完全にはわかりません。

import bs4 as bs 
import urllib.request 
import pandas as pd 
from pandas import ExcelWriter  

for week in range(1,18): 
    #IGNORE MOST OF THIS STUFF BELOW BECAUSE IT WORKS AS IS 
    source = urllib.request.urlopen('http://fftoday.com/stats/playerstats.php?Season=2015&GameWeek='+str(week)+'&PosID=10&LeagueID=1').read() 
    soup = bs.BeautifulSoup(source, 'lxml') 

    table = soup.find('table', width='100%', border='0', cellpadding='2', cellspacing='1') 
    table_rows = table.find_all('tr') 

    player_data = {} 

    for tr in table_rows: 
     td = tr.find_all('td') 
     row = [i.text for i in td] 
     if row != ['\xa0 ', 'Passing', 'Rushing', 'Fantasy'] and row != ['Player\nSort First: \n\n\n\xa0\xa0\n\t\tLast: \n\n\n', 'Team\n\n\n\n', 'G\n\n\n\n', 'Comp\n\n', 'Att\n\n', 'Yard\n\n', 'TD\n\n', 'INT\n\n', 'Att\n\n', 'Yard\n\n', 'TD\n\n', 'FPts\n\n\n\n', 'FPts/G\n\n\n\n']: 
      names = str(row[0]).encode('utf-8') 
      names = str(names)[:-1].split()[1:] 
      names[0:] = [' '.join(names[0:])] 
      row[0] = names[0] 
      player_data[str(row[0])] = row[1:] 
    df_qb = pd.DataFrame.from_dict(player_data) 
    df_qb = df_qb.transpose() 
    df_qb.columns = ['Team', 'Games', 'Completions', 'Att', 'Yards', 
       'TD', 'INT', 'Rush Att', 'Rush Yards', 'Rush TD', 
       'Fantasy Points', 'Fantasy Points per Game'] 

    #EVERY THING WORKS JUST FINE UNTIL RIGHT HERE 
    writer = ExcelWriter('Weekly Fantasy Football Data.xlsx') 
    df_qb.to_excel(writer, 'Week ' + str(week)) 
    writer.save() 
+0

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_excel.html – innisfree

+0

http://stackoverflow.com/questions/20219254/how-to-write-既存のExcelファイルを上書きせずにデータ利用パンダ – innisfree

答えて

0

あなたがやらなければならないことは、ループ

例えば外ライターdeclerationを移動しています

a = numpy.arange(5) 
w = ExcelWriter('e.xlsx') 
for i in a: 
    df = pd.DataFrame({'a':np.random.randint(1,100,10)}) 
    df.to_excel(w, sheet_name='sheet ' + str(i)) 
    w.save() 
+1

私を正しい軌道に乗せてくれてありがとう!私は作者の宣言をループから外しましたが、それはうまくいきませんでした。 save()宣言をループから外すことによって、私はそれを動作させることができました。 – mynameisgooch

+0

しかし、私はより定期的に、おそらくループの内側とループの外側に保存することをお勧めします。 –

関連する問題