Tôi muốn sử dụng tệp excel để lưu trữ dữ liệu được xây dựng bằng python. Vấn đề của tôi là tôi không thể thêm trang tính vào tệp excel hiện có. Ở đây, tôi đề xuất một mã mẫu để làm việc để giải quyết vấn đề này
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()
Mã này lưu hai DataFrame vào hai trang tính, có tên tương ứng là "x1" và "x2". Nếu tôi tạo hai DataFrame mới và cố gắng sử dụng cùng một mã để thêm hai trang tính mới, 'x3' và 'x4', thì dữ liệu gốc sẽ bị mất.
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()
Tôi muốn một tệp excel có bốn trang tính: 'x1', 'x2', 'x3', 'x4'. Tôi biết rằng 'xlsxwriter' không phải là "động cơ" duy nhất, còn có 'openpyxl'. Tôi cũng đã thấy có những người khác đã viết về vấn đề này, nhưng tôi vẫn không thể hiểu làm thế nào để làm điều đó.
Đây là một đoạn mã được lấy từ liên kết này
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()
Họ nói rằng nó hoạt động, nhưng thật khó để tìm ra cách. Tôi không hiểu "ws.title", "ws" và "dict" là gì trong ngữ cảnh này.
Cách tốt nhất để lưu "x1" và "x2", sau đó đóng tệp, mở lại và thêm "x3" và "x4"?