excelperfect
標(biāo)簽:Python與Excel,pandas
本文講解使用Python pandas將多個(gè)工作表保存到一個(gè)相同的Excel文件中。按照慣例,我們使用df代表數(shù)據(jù)框架,pd代表pandas。
我們?nèi)詫⑹褂胐f.to_excel()方法,但我們需要另一個(gè)類pd.ExcelWriter()的幫助。顧名思義,這個(gè)類寫入Excel文件。如果仔細(xì)閱讀pd.to_excel()文檔,ExcelWriter實(shí)際上是第一個(gè)參數(shù)。
模擬數(shù)據(jù)框架
先創(chuàng)建一些模擬數(shù)據(jù)框架,這樣我們就可以使用一些東西了。我們創(chuàng)建了兩個(gè)數(shù)據(jù)框架,第一個(gè)是20行10列的隨機(jī)數(shù);第二個(gè)是10行1列的隨機(jī)數(shù)。
import pandas as pd
import numpy as np
df_1 = pd.DataFrame(np.random.rand(20,10))
df_2 = pd.DataFrame(np.random.rand(10,1))
我們將介紹兩種保存多個(gè)工作表的Excel文件的方法。這兩種方法的想法基本相同:創(chuàng)建一個(gè)ExcelWriter,然后將其傳遞到df.to_excel()中,用于將數(shù)據(jù)框架保存到Excel文件中。這兩種方法在語法上略有不同,但工作方式相同。
方法1
這是pandas官方文檔中演示的方法。
with pd.ExcelWriter('mult_sheets_1.xlsx’) as writer1:
df_1.to_excel(writer1,sheet_name = 'df_1’, index = False)
df_2.to_excel(writer1,sheet_name = 'df_2’, index = False)
方法2
這是很多人喜歡的一種方法。
writer2 =pd.ExcelWriter('mult_sheets_2.xlsx’)
df_1.to_excel(writer2, sheet_name ='df_1’, index = False)
df_2.to_excel(writer2, sheet_name ='df_2’, index = False)
writer2.save()
這兩種方法的作用完全相同——將兩個(gè)數(shù)據(jù)框架保存到一個(gè)Excel文件中。然而,其運(yùn)作機(jī)制是完全不同的。
區(qū)別
首先,由于方法1中的with塊,所有數(shù)據(jù)框架必須在同一作用域內(nèi)。這意味著如果你的數(shù)據(jù)框架不在當(dāng)前作用域內(nèi),則必須首先將其引入。
而對于方法2,數(shù)據(jù)框架可以在不同的作用域內(nèi),并且仍然可以工作。這在代碼復(fù)雜時(shí)特別有用。
注:本文學(xué)習(xí)整理自pythoninoffice.com。