Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

881
Visualizações
¿Cómo guardar una nueva hoja en un archivo de Excel existente, usando Pandas?

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, llamadas "x1" y "x2" respectivamente. Si creo dos nuevos DataFrames y trato de 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 aún 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"?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Gracias. Creo que un ejemplo completo podría ser bueno para cualquier otra persona que tenga el mismo 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()

Aquí genero un archivo de Excel, según tengo entendido, realmente no importa si se genera a través del motor "xslxwriter" o "openpyxl".

Cuando quiero escribir sin perder los datos originales entonces

 import pandas as pd import numpy as np from openpyxl import load_workbook path = r"C:\Users\fedel\Desktop\excelData\PhD_data.xlsx" book = load_workbook(path) writer = pd.ExcelWriter(path, engine = 'openpyxl') writer.book = book x3 = np.random.randn(100, 2) df3 = pd.DataFrame(x3) x4 = np.random.randn(100, 2) df4 = pd.DataFrame(x4) df3.to_excel(writer, sheet_name = 'x3') df4.to_excel(writer, sheet_name = 'x4') writer.save() writer.close()

¡Este código hace el trabajo!

over 4 years ago · Santiago Trujillo Relatório

0

En el ejemplo que compartió, está cargando el archivo existente en el book y configurando el valor de writer.book para que sea book . En la línea writer.sheets = dict((ws.title, ws) for ws in book.worksheets) está accediendo a cada hoja del libro de trabajo como ws . El título de la hoja es entonces ws , por lo que está creando un diccionario de {sheet_titles: sheet} clave, pares de valores. Luego, este diccionario se establece en escritor.hojas. Esencialmente, estos pasos son solo cargar los datos existentes de 'Masterfile.xlsx' y completar su escritor con ellos.

Ahora supongamos que ya tiene un archivo con x1 y x2 como hojas. Puede usar el código de ejemplo para cargar el archivo y luego podría hacer algo como esto para agregar x3 y x4 .

 path = r"C:\Users\fedel\Desktop\excelData\PhD_data.xlsx" writer = pd.ExcelWriter(path, engine='openpyxl') df3.to_excel(writer, 'x3', index=False) df4.to_excel(writer, 'x4', index=False) writer.save()

Eso debería hacer lo que estás buscando.

over 4 years ago · Santiago Trujillo Relatório

0

Para crear un nuevo archivo

 x1 = np.random.randn(100, 2) df1 = pd.DataFrame(x1) with pd.ExcelWriter('sample.xlsx') as writer: df1.to_excel(writer, sheet_name='x1')

Para agregar al archivo, use el argumento mode='a' en pd.ExcelWriter .

 x2 = np.random.randn(100, 2) df2 = pd.DataFrame(x2) with pd.ExcelWriter('sample.xlsx', engine='openpyxl', mode='a') as writer: df2.to_excel(writer, sheet_name='x2')

El valor predeterminado es mode ='w' . Ver documentación .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda