Python:将pandas数据透视表写入excel模板



所以我关注这个网站已经有一段时间了,因为我有关于Python的知识库。我决定第一个问题就把自己扔到深底,所以希望有人能帮助我。

我目前有以下问题:尝试将Pandas数据透视表打印到预定义的excel模板中,例如从单元格C5

代码在下面,我通过CSV加载的表也在那里

from openpyxl import Workbook
from openpyxl.compat import range
from openpyxl.utils import get_column_letter
from openpyxl import load_workbook
from openpyxl.styles import Alignment
from openpyxl.utils.dataframe import dataframe_to_rows
import pandas as pd
pnl_lst = pd.read_csv('data_test.csv', index_col=0)
pnl_lst = pd.DataFrame(pnl_lst, columns=['Fruit_Veg', 'Item', 'AmountSold','AmountRotten','#ofpickers'])
pnl_lst = pnl_lst.groupby('Fruit_Veg').apply(lambda x: x.pivot_table(index=['Item'],aggfunc='sum',margins=True,margins_name='Total'))
print(pnl_lst)

通过data_test.csv输入表

<表类>Fruit_Veg项目AmountSoldAmountRotten# ofpickerstbody><<tr>1水果苹果0.9075020.1761080.3653982蔬菜胡萝卜0.7074910.6448050.3755133水果梨0.8985540.7249190.3385574水果覆盆子0.2848490.0237050.801695蔬菜土豆0.2054640.6822190.8344676蔬菜茄子0.6442480.5311950.970782

下面是我如何将pandas数据框的输出写入excel模板的。请注意,如果数据已经存在于您试图写入数据框的单元格中,则不会覆盖数据框,数据框将被写入新工作表,这是由于我包含了从模板中清除现有数据的步骤。我没有尝试在合并的单元格上写入输出,因此可能会抛出错误。

设置
from openpyxl import load_workbook
from openpyxl.utils.dataframe import dataframe_to_rows
file_path='Template.xlsx'
book=load_workbook(file_path)
writer = pd.ExcelWriter(file_path, engine='openpyxl')
writer.book = book
sheet_name="Template 1"
sheet=book[sheet_name]

设置要粘贴输出的excel模板的第一行和第一列。如果要将输出从单元格N2开始粘贴,则row_start将为2,col_start将为14

row_start=2
col_start=14

清除excel模板中的现有数据

for c_idx, col in enumerate(df.columns,col_start):
for r_idx in range(row_start,10001):
sheet.cell(row=r_idx, column=c_idx, value="")

将数据框写入excel模板

rows=dataframe_to_rows(df,index=False)
for r_idx, row in enumerate(rows,row_start):
for c_idx, col in enumerate(row,col_start):
sheet.cell(row=r_idx, column=c_idx, value=col)
writer.save()
writer.close()

最新更新