![](/img/trans.png)
[英]Writing a Python Created Pivot Table using Pandas to a Excel Document
[英]Python: Writing a pandas pivot table to an excel template
所以我一直在關注這個網站一段時間,了解我關於 Python 的知識庫。 決定在我的第一個問題上深究,所以希望有人能夠幫助我。
我目前遇到以下問題:嘗試將 Pandas Pivot 表打印到預定義的 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 | 物品 | 售出金額 | 金額爛 | #ofpickers | |
---|---|---|---|---|---|
1 | 水果 | 蘋果 | 0.907502 | 0.176108 | 0.365398 |
2 | 蔬菜 | 蘿卜 | 0.707491 | 0.644805 | 0.375513 |
3 | 水果 | 梨 | 0.898554 | 0.724919 | 0.338557 |
4 | 水果 | 覆盆子 | 0.284849 | 0.023705 | 0.80169 |
5 | 蔬菜 | 土豆 | 0.205464 | 0.682219 | 0.834467 |
6 | 蔬菜 | 茄子 | 0.644248 | 0.531195 | 0.970782 |
生成的 output (表格變得奇怪,但第一列中的 Fruit 和 Veg 是合並的單元格):
Fruit_Veg | 物品 | #ofpickers | 金額爛 | 售出金額 |
---|---|---|---|---|
水果 | 蘋果 | 0.365398283 | 0.176107564 | 0.907502485 |
梨 | 0.338556856 | 0.724919365 | 0.898554328 | |
覆盆子 | 0.801690277 | 0.02370525 | 0.284848945 | |
全部的 | 1.505645416 | 0.924732179 | 2.090905758 | |
蔬菜 | 茄子 | 0.970782439 | 0.531195328 | 0.644248183 |
蘿卜 | 0.375513124 | 0.644804957 | 0.707491361 | |
土豆 | 0.834466661 | 0.682219111 | 0.20546385 | |
全部的 | 2.180762224 | 1.858219396 | 1.557203394 |
嘗試過的想法(遺憾的是沒有運氣):
有沒有人有任何明智的想法?
非常感謝!
以下是我如何將 output 從 pandas dataframe 寫入 ZBF57C906FA7D15BB66DD96732 模板。 請注意,如果數據已經存在於您嘗試寫入 dataframe 的單元格中,它不會被覆蓋,並且 dataframe 將被寫入新工作表,我已經包含了從模板中清除現有數據的步驟. 我沒有嘗試在合並的單元格上寫 output ,這樣可能會引發錯誤。
設置
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 模板中設置第一行和第一列,其中 output 將被粘貼。 如果要從單元格 N2 開始粘貼我的 output,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="")
將 dataframe 寫入 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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.