実現したいこと
pd.DataFrameで作ったデータ(data1)を、既存のEXCELファイル(datafile)の既存SHEET(wb["data"])に貼り付けたいです。
現在は、下記コードにて、1セルずつ地道に代入していく手法をとっていますが、データ量が多くて
処理が重くなってしまっています。
dataframeごと一気にコピペでき、処理速度を改善できる方法がないか探しています。
該当のソースコード
python
1row1=len(data1) 2col1=len(data1.columns) 3 4wb = openpyxl.load_workbook(datafile) 5ws = wb["data"] 6for y in range(col1): 7 yname=data1.columns.values[y] 8 ws.cell(row=1,column=y+1,value=yname) 9 for x in range(row1): 10 m = data1.iloc[x,y] 11 ws.cell(row=x+2,column=y+1,value=m)
試したこと
色々調べて試してみましたが、せいぜいdata1というシートが新たに追加されるにとどまり、
既存のシートが編集されるようなコマンドを見つけることができていません。
地道にやるしかないのでしょうか。。。。
「data1というシートが新たに追加される」のであれば、その後に一気にコピペ出来ないでしょうか?
※openpyxlに詳しくないので具体的には分からないですが
書き方が悪かったですが、「data1」に出力というのはできます。
あくまで「data」というシートに転記したく、「data1」にデータが吐き出されるのは目的の処理ではないです。。。
それは分かっています。ですから、data1シートからpandasで出力したデータ部分をopenpyxlでdataシートへコピーすれば、ループ処理より速くなるのでは?という提案でした。data1シートは削除しますが、その一連の処理と今のループ処理とでどちらが速いかは計測しないと分からないでしょう。
すいません。
一度別シートに吐き出してから移すというところまで考えが及んでいませんでした。
ですが、エクセル内のデータを一度にコピペする方法も探しましたが、結局1セルor1行ずつ移さないといけないようでした。
一度書いて検証してみます。アドバイスありがとうございます。

回答1件
あなたの回答
tips
プレビュー