2016-11-27 25 views
2

複数のCSVをURL経由で複数のPandas DataFramesに読み込み、各CSVの結果を個別のExcelワークシート(タブ)に保存したいと考えています。私がwriter.save()をforループの中に保つと、私は単一のワークシートで最後の結果しか得られません。そして、私がwriter.save()をforループの外に移動すると、最初の結果が1つのワークシートにしか得られません。どちらも間違っています。CSVから読み込んでExcelのタブに保存する

import requests 
import pandas as pd 
from pandas import ExcelWriter 

work_statements = { 
'sheet1': 'URL1', 
'sheet2': 'URL2', 
'sheet3': 'URL3' 
} 

for sheet, statement in work_statements.items(): 
    writer = pd.ExcelWriter('B.xlsx', engine='xlsxwriter') 
    r = requests.get(statement) # go to URL 
    df = pd.read_csv(statement) # read from URL 
    df.to_excel(writer, sheet_name= sheet) 
writer.save() 

どのように3つの結果を3つの別々のワークシートで得ることができますか?

答えて

2

writerオブジェクトをループごとに再初期化しています。 forの前に一度だけ初期化して、ループの後に一度ドキュメントを保存してください。また、read_csv()ラインで、あなたはURL(すなわち、statement)が辞書に保存されていない、要求内容に読んでする必要があります。

writer = pd.ExcelWriter('B.xlsx', engine='xlsxwriter') 

for sheet, statement in work_statements.items(): 
    r = requests.get(statement)     # go to URL 
    df = pd.read_csv(r.content)     # read from URL 
    df.to_excel(writer, sheet_name= sheet) 
writer.save() 
+0

これは働いていました!ありがとうございました – user3062459

関連する問題