91954


pandasにより取得したDataFrame型データをexcelファイルに移す作業を行いました。  
9行ごとに5つの表が貼り付けられている状態を予想していましたが，結果は５つ目の表のみ想定通りの位置に貼り付けられている状態でした。(下図のような感じ)  
また表データは６行６列のデータです。  
DataFrame型データをexcelファイルに出力するたびにすべてのセル情報が上書きされると考え，別の処理を試しましたがうまくいきませんでした。  
予想通りに表を出力するにはこのコードのどこを変えればよいでしょうか？

[code]

    import pandas as pd
    
    #配列用のカウンター
    count = 0
    
    #スクレイピング先url
    url = 'OOO'
    
    #変数dataにスクレイピング先tableをすべて格納，データ型はdataframe
    data = pd.read_html(url, header = 0)
    
    #指定したexcelファイルにweb上で取得したデータを記入
    for d in data:
        d.to_excel("AAA.xlsx", startrow=1+count*9, startcol=0)
        count = count + 1
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/hb496.png)](https://i.stack.imgur.com/hb496.png)


CC BY-SA 4.0
2022-11-02T12:39:25.233
91952
2022-11-02T15:45:43.593
52517
question
python pandas
DataFrame型データのexcelファイルへの出力


> DataFrame型データをexcelファイルに出力するたびにすべてのセル情報が上書きされると考え

たぶんそんな感じでしょうか  
ループ内で毎回ファイル名指定するのではなく, 最初にファイル名指定し それをループ内で使うとよいはず。

(環境無いので試せてないけど, こんな風)  
`mode="a"` や `if_sheet_exists="overlay"` はファイルの状況などによって 付け外しするとよいかもです

[code]

    with pd.ExcelWriter("AAA.xlsx",
            mode="a",
            engine="openpyxl",
            if_sheet_exists="overlay",
        ) as writer:
        for count, d in enumerate(data):
            d.to_excel(writer, sheet_name="Sheet1", startrow=1+count*9)
    
[/code]

参考: (pandas.pydata.org)
[pandas.ExcelWriter](https://pandas.pydata.org/docs/reference/api/pandas.ExcelWriter.html#pandas.ExcelWriter)


CC BY-SA 4.0
2022-11-02T13:34:30.207
91954
2022-11-02T15:45:43.593
2022-11-02T15:45:43.593
43025
43025
91952
answer