iT邦幫忙

0

Python 中的pandas to_excel用法

目的:將資料夾中所有EXCEL讀取後各自計算最後合併成一個EXCEL,新的EXCEL裡有多個表單
問題:
目前我寫出來的範例如下
#將路徑下副檔名xlsx的取出
import openpyxl
path_domestic = os.path.abspath(os.getcwd()) + '\globle'
non_domestic = glob.glob(os.path.join(path_domestic, '*.xlsx'))
#寫迴圈並計算所需要的資料
for file in non_domestic:
data = pd.read_excel(file)
TQ = data["Qty"].sum()
amount = data['Px'] * data['Qty']
data['Amount'] = amount #新增一欄
#新增一列並寫到data1
new = pd.DataFrame({'Security': '',
'交易所代碼': '',
'Qty': TQ,
'Px': '',
'Fill Time': '',
'Exec Brkr': '',
'Maker/Taker': '',
'Amount': TAmount,
'N': Aver_P}, index=[1])
data1 = data.append(new, ignore_index=True)
#取得股票名稱
name = str(data["Security"][1])
print(data1)

現在問題是我要如何將多個dataframe寫入到一個EXCEL裡?
因為我用data1.to_excel('20210126.xlsx',sheet_name = name)
這樣只會產生一個表單(迴圈會覆蓋過原有檔案)
下圖是資料夾中其中一個檔案
https://ithelp.ithome.com.tw/upload/images/20210126/2013461581dS3qZaRf.jpg

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2021-01-26 22:19:14 檢舉
sheet_name = name不就給你改表名的?
我不是要改表名,我是將產生新的表單在一個EXCEL裡
ccutmis iT邦高手 4 級 ‧ 2021-01-26 22:40:37 檢舉
像這個嗎?

https://stackoverflow.com/questions/38074678/append-existing-excel-sheet-with-new-dataframe-using-python-pandas

google搜 'pandas to_excel append rows' 可以找到不少相關資訊
froce iT邦大師 1 級 ‧ 2021-01-27 11:03:30 檢舉
喔,因為我大多輸出csv忘記輸出xlsx要改輸出模式。
其實官網就有答案了。

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_excel.html

with pd.ExcelWriter('output.xlsx', mode='a') as writer:
df.to_excel(writer, sheet_name=sheetName)

1 個回答

0
hokou
iT邦新手 4 級 ‧ 2021-01-27 08:11:52

我猜是因為 append 並沒有累加
每次的 data1 都會被新的蓋過
可以調整看看

data1 = []

for ...
    data1 = data1.append(new, ignore_index=True)

或是參考下面文章把 data1.to_excel() 放到迴圈裡

pandas.DataFrame.to_excel
Example: Pandas Excel with multiple dataframes

for ...
    with pd.ExcelWriter('20210126.xlsx') as writer:  
        data1.to_excel(writer, sheet_name= name)

我要發表回答

立即登入回答