Quiero usar archivos de Excel para almacenar datos elaborados con Python. Mi problema es que no puedo agregar hojas a un archivo de Excel existente. Aquí sugiero un código de muestra para trabajar con el fin de llegar a este problema
import pandas as pd
import numpy as np
path = r"C:\Users\fedel\Desktop\excelData\PhD_data.xlsx"
x1 = np.random.randn(100, 2)
df1 = pd.DataFrame(x1)
x2 = np.random.randn(100, 2)
df2 = pd.DataFrame(x2)
writer = pd.ExcelWriter(path, engine = 'xlsxwriter')
df1.to_excel(writer, sheet_name = 'x1')
df2.to_excel(writer, sheet_name = 'x2')
writer.save()
writer.close()
Este código guarda dos DataFrames en dos hojas, denominadas "x1" y "x2" respectivamente. Si creo dos nuevos DataFrames e intento usar el mismo código para agregar dos hojas nuevas, 'x3' y 'x4', los datos originales se pierden.
import pandas as pd
import numpy as np
path = r"C:\Users\fedel\Desktop\excelData\PhD_data.xlsx"
x3 = np.random.randn(100, 2)
df3 = pd.DataFrame(x3)
x4 = np.random.randn(100, 2)
df4 = pd.DataFrame(x4)
writer = pd.ExcelWriter(path, engine = 'xlsxwriter')
df3.to_excel(writer, sheet_name = 'x3')
df4.to_excel(writer, sheet_name = 'x4')
writer.save()
writer.close()
Quiero un archivo de Excel con cuatro hojas: 'x1', 'x2', 'x3', 'x4'. Sé que 'xlsxwriter' no es el único "motor", existe 'openpyxl'. También vi que ya hay otras personas que han escrito sobre este tema, pero todavía no puedo entender cómo hacerlo.
Aquí un código tomado de este enlace
import pandas
from openpyxl import load_workbook
book = load_workbook('Masterfile.xlsx')
writer = pandas.ExcelWriter('Masterfile.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2'])
writer.save()
Dicen que funciona, pero es difícil saber cómo. No entiendo qué son "ws.title", "ws" y "dict" en este contexto.
¿Cuál es la mejor manera de guardar "x1" y "x2", luego cerrar el archivo, abrirlo nuevamente y agregar "x3" y "x4"?