用法:
class pandas.ExcelWriter(path, engine=None, date_format=None, datetime_format=None, mode='w', storage_options=None, if_sheet_exists=None, engine_kwargs=None, **kwargs)
用於將 DataFrame 對象寫入 Excel 工作表的類。
默認使用:* xlwt 用於 xls * xlsxwriter 用於 xlsx,如果安裝了 xlsxwriter,否則 openpyxl * odf 用於 ods。有關典型用法,請參見 DataFrame.to_excel。
writer 應該用作上下文管理器。否則,調用
close()
保存並關閉任何打開的文件句柄。- path:str 或打字。BinaryIO
xls 或 xlsx 或 ods 文件的路徑。
- engine:str(可選)
用於寫作的引擎。如果沒有,默認為
io.excel.<extension>.writer
。注意:隻能作為關鍵字參數傳遞。- date_format:str,默認無
寫入 Excel 文件的日期格式字符串(例如“YYYY-MM-DD”)。
- datetime_format:str,默認無
寫入 Excel 文件的日期時間對象的格式字符串。 (例如“YYYY-MM-DD HH:MM:SS”)。
- mode:{‘w’, ‘a’},默認 ‘w’
要使用的文件模式(寫入或附加)。附加不適用於 fsspec URL。
- storage_options:字典,可選
對特定存儲連接有意義的額外選項,例如主機、端口、用戶名、密碼等,如果使用將由
fsspec
解析的 URL,例如,從 “s3://”、“gcs://” 開始。- if_sheet_exists:{‘error’, ‘new’, ‘replace’, ‘overlay’},默認 ‘error’
嘗試寫入已存在的工作表時的行為方式(僅限附加模式)。
錯誤:引發 ValueError。
new:創建一個新工作表,其名稱由引擎確定。
替換:在寫入之前刪除工作表的內容。
覆蓋:將內容寫入現有工作表而不刪除舊內容。
- engine_kwargs:字典,可選
要傳遞到引擎的關鍵字參數。這些將傳遞給各個引擎的以下函數:
xlsxwriter:
xlsxwriter.Workbook(file, **engine_kwargs)
openpyxl(寫入模式):
openpyxl.Workbook(**engine_kwargs)
openpyxl(追加模式):
openpyxl.load_workbook(file, **engine_kwargs)
odswriter:
odf.opendocument.OpenDocumentSpreadsheet(**engine_kwargs)
- **kwargs:字典,可選
要傳遞到引擎的關鍵字參數。
參數:
注意:
沒有任何方法和屬性被認為是公共的。
為了與 CSV 編寫器兼容,ExcelWriter 在寫入之前將列表和字典序列化為字符串。
例子:
默認用法:
>>> df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"]) >>> with pd.ExcelWriter("path_to_file.xlsx") as writer: ... df.to_excel(writer)
要寫入單個文件中的單獨工作表:
>>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"]) >>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"]) >>> with pd.ExcelWriter("path_to_file.xlsx") as writer: ... df1.to_excel(writer, sheet_name="Sheet1") ... df2.to_excel(writer, sheet_name="Sheet2")
您可以設置日期格式或日期時間格式:
>>> from datetime import date, datetime >>> df = pd.DataFrame( ... [ ... [date(2014, 1, 31), date(1999, 9, 24)], ... [datetime(1998, 5, 26, 23, 33, 4), datetime(2014, 2, 28, 13, 5, 13)], ... ], ... index=["Date", "Datetime"], ... columns=["X", "Y"], ... ) >>> with pd.ExcelWriter( ... "path_to_file.xlsx", ... date_format="YYYY-MM-DD", ... datetime_format="YYYY-MM-DD HH:MM:SS" ... ) as writer: ... df.to_excel(writer)
您還可以附加到現有的 Excel 文件:
>>> with pd.ExcelWriter("path_to_file.xlsx", mode="a", engine="openpyxl") as writer: ... df.to_excel(writer, sheet_name="Sheet3")
在這裏,
if_sheet_exists
參數可以設置為替換已經存在的工作表:>>> with ExcelWriter( ... "path_to_file.xlsx", ... mode="a", ... engine="openpyxl", ... if_sheet_exists="replace", ... ) as writer: ... df.to_excel(writer, sheet_name="Sheet1")
您還可以將多個 DataFrame 寫入單個工作表。請注意,
if_sheet_exists
參數需要設置為overlay
:>>> with ExcelWriter("path_to_file.xlsx", ... mode="a", ... engine="openpyxl", ... if_sheet_exists="overlay", ... ) as writer: ... df1.to_excel(writer, sheet_name="Sheet1") ... df2.to_excel(writer, sheet_name="Sheet1", startcol=3)
您可以將 Excel 文件存儲在 RAM 中:
>>> import io >>> df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"]) >>> buffer = io.BytesIO() >>> with pd.ExcelWriter(buffer) as writer: ... df.to_excel(writer)
您可以將 Excel 文件打包到 zip 存檔中:
>>> import zipfile >>> df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"]) >>> with zipfile.ZipFile("path_to_file.zip", "w") as zf: ... with zf.open("filename.xlsx", "w") as buffer: ... with pd.ExcelWriter(buffer) as writer: ... df.to_excel(writer)
您可以為底層引擎指定其他參數:
>>> with pd.ExcelWriter( ... "path_to_file.xlsx", ... engine="xlsxwriter", ... engine_kwargs={"options":{"nan_inf_to_errors":True}} ... ) as writer: ... df.to_excel(writer)
在附加模式下,
engine_kwargs
被傳遞到 openpyxl 的load_workbook
:>>> with pd.ExcelWriter( ... "path_to_file.xlsx", ... engine="openpyxl", ... mode="a", ... engine_kwargs={"keep_vba":True} ... ) as writer: ... df.to_excel(writer, sheet_name="Sheet2")
相關用法
- Python pandas.arrays.IntervalArray.is_empty用法及代碼示例
- Python pandas.DataFrame.ewm用法及代碼示例
- Python pandas.api.types.is_timedelta64_ns_dtype用法及代碼示例
- Python pandas.DataFrame.dot用法及代碼示例
- Python pandas.DataFrame.apply用法及代碼示例
- Python pandas.DataFrame.combine_first用法及代碼示例
- Python pandas.read_pickle用法及代碼示例
- Python pandas.Index.value_counts用法及代碼示例
- Python pandas.DatetimeTZDtype用法及代碼示例
- Python pandas.DataFrame.cumsum用法及代碼示例
- Python pandas.Interval.is_empty用法及代碼示例
- Python pandas.api.indexers.FixedForwardWindowIndexer用法及代碼示例
- Python pandas.core.resample.Resampler.nearest用法及代碼示例
- Python pandas.Series.add_prefix用法及代碼示例
- Python pandas.Period.strftime用法及代碼示例
- Python pandas.Series.map用法及代碼示例
- Python pandas.Series.max用法及代碼示例
- Python pandas.DataFrame.rename用法及代碼示例
- Python pandas.DataFrame.to_numpy用法及代碼示例
- Python pandas.Period.dayofyear用法及代碼示例
注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.ExcelWriter。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。