Это фрагмент кода, который я пробовал до сих пор, он создает сводную таблицу, но не так же, как мы видим, что вручную созданную сводную таблицу можно найти другим способом. Я хочу создать сводную таблицу в том виде, в каком она есть в Excel, но она просто показывает числа, есть ли другой способ создать, если поменьше, пожалуйста, помогите мне, вчера я также задал тот же вопрос, но без всякой попытки. это входной образец, который я использую
df=df = pd.DataFrame({'Index': ["re","re","re","re"],
'De': ['c', 'c','s','s'],'Hlled':['In','out','In','out'],'V':['In','out','In','out']})
import openpyxl as xl
import os
import pandas as pd
import glob
import csv
from openpyxl import load_workbook
import fnmatch
from openpyxl.utils.formulas import FORMULAE
import datetime
import sys
import pandas as pd
import numpy as np
for root, dirs, files in os.walk(".", topdown=False):
for filename in files:
if filename.endswith('.xlsx') and not filename.startswith(('index', 'M')):
book= load_workbook(filename,data_only=True)
Read_excel = pd.ExcelFile(filename)
table1=pd.pivot_table(df[(df["In"]=="In ")], values='index', index=['De'],
columns=['V'],aggfunc='count', fill_value=0,margins=True,margins_name = 'Sub-total')
table2=pd.pivot_table(df[(df["In"]=="In")], values='index', index=['De'],columns=['Hlled'],aggfunc=len, fill_value=0,margins=True,margins_name = 'Sub-total')
writer = pd.ExcelWriter(filename, engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
table1.to_excel(writer, 'po_r',startcol=1,startrow=7)
table2.to_excel(writer, 'po_r',startcol=6,startrow=7)
workheading = writer.sheets['epo_r']
workheading.cell(row=5, column=2).value = 'As'
workheading.cell(row=6, column=2).value = 'Iv'
workheading.cell(row=5, column=7).value = 'Aes'
workheading.cell(row=6, column=7).value = 'IPS'
##################epo calculation ########################
workheading.cell(row=1, column=1).value = 'Ecore'
workheading.cell(row=1, column=2).value ='=(0.5*B2)+(0.5*B3)'
workheading.cell(row=1, column=2).number_format = '00.00%'
workheading.cell(row=2, column=1).value = 'Are'
workheading.cell(row=2, column=2).value ='=C11/E11'
workheading.cell(row=2, column=2).number_format = '00.00%'
workheading.cell(row=3, column=1).value = 'Hi'
workheading.cell(row=3, column=2).value ='=H11/J11'
workheading.cell(row=3,column=2).number_format = '00.00%'
#print(worksheet)
writer.save()
print("done")