簡體   English   中英

如何在 excel 中使用 xlsxwriter 保存 pandas pivot 表

[英]How to save a pandas pivot table with xlsxwriter in excel

我想保存一個 pandas pivot 表格,並將其格式化為 excel 工作簿。

我有一個 pandas pivot 表,基於這個公式:

table = pd.pivot_table(d2, values=['Wert'], index=['area', 'Name'], columns=['Monat'],
                          aggfunc={'Wert': np.sum}, margins=True).fillna('')

從我原來的 dataframe:

df
Area Name2 Monat Wert
A    A      1     2
A    A      1     3
A    B      1     2
A    A      2     1

所以 pivot 表如下所示:

          Wert
     Monat 1   2  All
Area  Name 
A     A    5   1  6
      B    2      2
All        7   1  8

然后我想使用以下代碼將其保存在 excel 工作簿中:

import pandas as pd
import xlsxwriter
workbook = xlsxwriter.Workbook('myexcel.xlsx)
worksheet1 = workbook.add_worksheet('table1')
caption = 'Table1'
worksheet1.set_column(1, 14, 25) #irrelevant, just a random size right now
worksheet1.write('B1', caption)
worksheet1.add_table('B3:K100', {'data': table.values.tolist()}) #also wrong size from B3 to K100
workbook.close()

但這看起來像這樣(具有不同的值),因此缺少標題: 在此處輸入圖像描述

如何調整它並將 pivot 表保存在 excel 中?

如果我使用 pandas 命令.to_excel它看起來像這樣:

在此處輸入圖像描述

這很好,但列名不尊重名稱的寬度,背景顏色也不好看,而且我也錯過了捕獲。

我找到了結合這個主題的解決方案:

flattened = pd.DataFrame(table.to_records())
flattened.columns = [column.replace("('Wert', ", "Monat: ").replace(")", "") for column in flattened.columns] ##only for renaming the column headers

接着:

workbook = xlsxwriter.Workbook(excelfilename, options={'nan_inf_to_errors': True})
worksheet = workbook.add_worksheet('Table1')
worksheet1.set_column(0, flattned.shape[1], 25)
worksheet.add_table(0, 0, flattened.shape[0], flattened.shape[1]-1,
    {'data': flattened.values.tolist(),
    'columns': [{'header': c} for c in flattened.columns.tolist()],
    'style': 'Table Style Medium 9'})
workbook.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM