Создайте сводную таблицу как в Excel - PullRequest
0 голосов
/ 26 февраля 2020

Это фрагмент кода, который я пробовал до сих пор, он создает сводную таблицу, но не так же, как мы видим, что вручную созданную сводную таблицу можно найти другим способом. Я хочу создать сводную таблицу в том виде, в каком она есть в Excel, но она просто показывает числа, есть ли другой способ создать, если поменьше, пожалуйста, помогите мне, вчера я также задал тот же вопрос, но без всякой попытки. это входной образец, который я использую input sample use

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")
...