Я могу записать значения в существующий лист Excel, но не могу экспортировать значения из сводной таблицы на пандах в лист Excel, используя openpyxl.Ниже приведены мой код и то, на что я способен:
import pandas as pd
import openpyxl as op
import numpy as np
from openpyxl import Workbook, worksheet, load_workbook
wb = op.load_workbook("Table1.xlsx")
#ws = wb.active # selects active excel sheet
print(wb.sheetnames) # Shows all available sheet names
ws = wb['Sheet1'] # Select sheet name "Sheet1"
ws['B2'] = 40 # Input on cell B2
ws['B3'] = 18
ws['B4'] = 20
ws['B5'] = 20
ws['B6'] = 20
ws['C2'] = 8 # Input on cell C2
ws['C3'] = 30
ws['C4'] = 4
ws['C5'] = 10
ws['C6'] = 9
ws['D2'] = 89 # Input on cell D2
ws['D3'] = 300
ws['D4'] = 76
ws['D5'] = 20
ws['D6'] = 4
ws1 = wb['agua'] # Select sheet name "agua"
ws1['B2'] = 4 # Input on cell B2
ws1['B3'] = 60
ws1['B4'] = 0
ws1['C2'] = 90
ws1['C3'] = 23
ws1['C4'] = 20
wb.save("test.xlsx") # Saves to new excell worksheet to avoid mistakes
Но у меня есть вывод этой сводной таблицы, который мне необходим для заполнения каждого столбца сводной таблицы до существующего листа файла Excel, который будет заполнен автоматически.Посмотрите ниже:
df2 = pd.read_csv("https://www.dropbox.com/s/90y07129zn351z9/test_data.csv?dl=1",encoding="latin-1")
df2['received'] = pd.to_datetime(df2['received'])
df2['sent'] = pd.to_datetime(df2['sent'])
pvt_all = df2.dropna(axis=0, how='all', subset=['received', 'sent'])\
.pivot_table(index=['site'], values=['received','sent'],\
aggfunc='count', margins=True, dropna=False)
pvt_all['to_send']= pvt_all['received']-pvt_all['sent']
pvt_all=pvt_all[['received','sent','to_send']]
pvt_all
received sent to_send
site
2 32.0 27.0 5.0
3 20.0 17.0 3.0
4 33.0 31.0 2.0
5 40.0 31.0 9.0
All 125.0 106.0 19.0
Полный набор данных находится в ссылке, я не могу поделиться (пост) здесь, потому что stackoverflow.com ограничивает символы до 30000
Что я хочу, чтобы написать эти значения столбца ниже:
received sent to_send
site
2 32.0 27.0 5.0
3 20.0 17.0 3.0
4 33.0 31.0 2.0
5 40.0 31.0 9.0
All 125.0 106.0 19.0
Для существующей книги Excel, уже имеющей заголовки и индекс, как показано ниже:
received sent to_send
site
2
3
4
5
All
У меня есть больше возможностей для таблицы Excel, но я просто хочу понять, как выполнить код для достиженияжелаемый результат.