Làm cách nào để bạn ghi vào tệp excel hiện có mà không ghi đè dữ liệu bằng gấu trúc?

Người viết nên được sử dụng như một người quản lý bối cảnh. Nếu không, hãy gọi close() để lưu và đóng mọi xử lý tệp đã mở

Đường dẫn tham số str hoặc gõ. BinaryIO

Đường dẫn đến tệp xls hoặc xlsx hoặc ods

công cụ str (tùy chọn)

Động cơ sử dụng để viết. Nếu Không, mặc định là

>>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
>>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
>>> with pd.ExcelWriter("path_to_file.xlsx") as writer:
..     df1.to_excel(writer, sheet_name="Sheet1")  
..     df2.to_excel(writer, sheet_name="Sheet2")  
1. GHI CHÚ. chỉ có thể được thông qua như một đối số từ khóa

Không dùng nữa kể từ phiên bản 1. 2. 0. Vì gói xlwt không còn được duy trì, công cụ

>>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
>>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
>>> with pd.ExcelWriter("path_to_file.xlsx") as writer:
..     df1.to_excel(writer, sheet_name="Sheet1")  
..     df2.to_excel(writer, sheet_name="Sheet2")  
2 sẽ bị xóa trong phiên bản tương lai của pandas.

date_format str, mặc định Không có

Chuỗi định dạng cho ngày được ghi vào tệp Excel (e. g. 'YYYY-MM-DD')

datetime_format str, mặc định Không có

Định dạng chuỗi cho các đối tượng ngày giờ được ghi vào tệp Excel. (e. g. 'YYYY-MM-DD HH. MM. SS')

chế độ {'w', 'a'}, mặc định 'w'

Chế độ tệp để sử dụng (ghi hoặc nối thêm). Nối không hoạt động với các URL fsspec

storage_options chính tả, tùy chọn

Các tùy chọn bổ sung có ý nghĩa đối với một kết nối lưu trữ cụ thể, e. g. máy chủ, cổng, tên người dùng, mật khẩu, v.v. Đối với URL HTTP(S), các cặp khóa-giá trị được chuyển tiếp tới

>>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
>>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
>>> with pd.ExcelWriter("path_to_file.xlsx") as writer:
..     df1.to_excel(writer, sheet_name="Sheet1")  
..     df2.to_excel(writer, sheet_name="Sheet2")  
3 dưới dạng tùy chọn tiêu đề. Đối với các URL khác (e. g. bắt đầu với “s3. //”, và “gcs. //”) các cặp khóa-giá trị được chuyển tiếp tới
>>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
>>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
>>> with pd.ExcelWriter("path_to_file.xlsx") as writer:
..     df1.to_excel(writer, sheet_name="Sheet1")  
..     df2.to_excel(writer, sheet_name="Sheet2")  
4. Vui lòng xem
>>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
>>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
>>> with pd.ExcelWriter("path_to_file.xlsx") as writer:
..     df1.to_excel(writer, sheet_name="Sheet1")  
..     df2.to_excel(writer, sheet_name="Sheet2")  
5 và
>>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
>>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
>>> with pd.ExcelWriter("path_to_file.xlsx") as writer:
..     df1.to_excel(writer, sheet_name="Sheet1")  
..     df2.to_excel(writer, sheet_name="Sheet2")  
6 để biết thêm chi tiết và để biết thêm ví dụ về các tùy chọn lưu trữ, hãy tham khảo tại đây

Mới trong phiên bản 1. 2. 0

if_sheet_exists {'lỗi', 'mới', 'thay thế', 'lớp phủ'}, 'lỗi' mặc định

Cách xử lý khi cố ghi vào một trang tính đã tồn tại (chỉ ở chế độ chắp thêm)

  • lỗi. tăng một ValueError

  • Mới. Tạo một trang tính mới, với tên được xác định bởi công cụ

  • thay thế. Xóa nội dung của trang tính trước khi ghi vào nó

  • lớp phủ. Viết nội dung vào trang tính hiện có mà không xóa nội dung cũ

Mới trong phiên bản 1. 3. 0

Đã thay đổi trong phiên bản 1. 4. 0. Đã thêm tùy chọn

>>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
>>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
>>> with pd.ExcelWriter("path_to_file.xlsx") as writer:
..     df1.to_excel(writer, sheet_name="Sheet1")  
..     df2.to_excel(writer, sheet_name="Sheet2")  
7

engine_kwargs chính tả, tùy chọn

Đối số từ khóa được chuyển vào công cụ. Chúng sẽ được chuyển đến các chức năng sau của các công cụ tương ứng

  • xlsxwriter.

    >>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
    >>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
    >>> with pd.ExcelWriter("path_to_file.xlsx") as writer:
    ..     df1.to_excel(writer, sheet_name="Sheet1")  
    ..     df2.to_excel(writer, sheet_name="Sheet2")  
    
    8

  • openpyxl (chế độ ghi).

    >>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
    >>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
    >>> with pd.ExcelWriter("path_to_file.xlsx") as writer:
    ..     df1.to_excel(writer, sheet_name="Sheet1")  
    ..     df2.to_excel(writer, sheet_name="Sheet2")  
    
    9

  • openpyxl (chế độ chắp thêm).

    >>> from datetime import date, datetime  
    >>> df = pd.DataFrame(
    ..     [
    ..         [date(2014, 1, 31), date(1999, 9, 24)],
    ..         [datetime(1998, 5, 26, 23, 33, 4), datetime(2014, 2, 28, 13, 5, 13)],
    ..     ],
    ..     index=["Date", "Datetime"],
    ..     columns=["X", "Y"],
    .. )  
    >>> with pd.ExcelWriter(
    ..     "path_to_file.xlsx",
    ..     date_format="YYYY-MM-DD",
    ..     datetime_format="YYYY-MM-DD HH:MM:SS"
    .. ) as writer:
    ..     df.to_excel(writer)  
    
    0

  • người viết thư.

    >>> from datetime import date, datetime  
    >>> df = pd.DataFrame(
    ..     [
    ..         [date(2014, 1, 31), date(1999, 9, 24)],
    ..         [datetime(1998, 5, 26, 23, 33, 4), datetime(2014, 2, 28, 13, 5, 13)],
    ..     ],
    ..     index=["Date", "Datetime"],
    ..     columns=["X", "Y"],
    .. )  
    >>> with pd.ExcelWriter(
    ..     "path_to_file.xlsx",
    ..     date_format="YYYY-MM-DD",
    ..     datetime_format="YYYY-MM-DD HH:MM:SS"
    .. ) as writer:
    ..     df.to_excel(writer)  
    
    1

Mới trong phiên bản 1. 3. 0

**kwargs chính tả, tùy chọn

Đối số từ khóa được chuyển vào công cụ

Không dùng nữa kể từ phiên bản 1. 3. 0. Thay vào đó, hãy sử dụng engine_kwargs.

ghi chú

Để tương thích với trình ghi CSV, ExcelWriter tuần tự hóa các danh sách và đọc thành chuỗi trước khi viết

ví dụ

sử dụng mặc định

>>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
>>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
>>> with pd.ExcelWriter("path_to_file.xlsx") as writer:
..     df1.to_excel(writer, sheet_name="Sheet1")  
..     df2.to_excel(writer, sheet_name="Sheet2")  
1

Để ghi vào các trang riêng biệt trong một tệp

>>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
>>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
>>> with pd.ExcelWriter("path_to_file.xlsx") as writer:
..     df1.to_excel(writer, sheet_name="Sheet1")  
..     df2.to_excel(writer, sheet_name="Sheet2")  

Bạn có thể đặt định dạng ngày hoặc định dạng ngày giờ

>>> from datetime import date, datetime  
>>> df = pd.DataFrame(
..     [
..         [date(2014, 1, 31), date(1999, 9, 24)],
..         [datetime(1998, 5, 26, 23, 33, 4), datetime(2014, 2, 28, 13, 5, 13)],
..     ],
..     index=["Date", "Datetime"],
..     columns=["X", "Y"],
.. )  
>>> with pd.ExcelWriter(
..     "path_to_file.xlsx",
..     date_format="YYYY-MM-DD",
..     datetime_format="YYYY-MM-DD HH:MM:SS"
.. ) as writer:
..     df.to_excel(writer)  

Bạn cũng có thể thêm vào một tệp Excel hiện có

>>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
>>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
>>> with pd.ExcelWriter("path_to_file.xlsx") as writer:
..     df1.to_excel(writer, sheet_name="Sheet1")  
..     df2.to_excel(writer, sheet_name="Sheet2")  
4

Tại đây, tham số if_sheet_exists có thể được đặt để thay thế một trang tính nếu nó đã tồn tại

>>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
>>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
>>> with pd.ExcelWriter("path_to_file.xlsx") as writer:
..     df1.to_excel(writer, sheet_name="Sheet1")  
..     df2.to_excel(writer, sheet_name="Sheet2")  
5

Bạn cũng có thể viết nhiều DataFrames vào một trang tính. Lưu ý rằng tham số

>>> from datetime import date, datetime  
>>> df = pd.DataFrame(
..     [
..         [date(2014, 1, 31), date(1999, 9, 24)],
..         [datetime(1998, 5, 26, 23, 33, 4), datetime(2014, 2, 28, 13, 5, 13)],
..     ],
..     index=["Date", "Datetime"],
..     columns=["X", "Y"],
.. )  
>>> with pd.ExcelWriter(
..     "path_to_file.xlsx",
..     date_format="YYYY-MM-DD",
..     datetime_format="YYYY-MM-DD HH:MM:SS"
.. ) as writer:
..     df.to_excel(writer)  
2 cần được đặt thành
>>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
>>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
>>> with pd.ExcelWriter("path_to_file.xlsx") as writer:
..     df1.to_excel(writer, sheet_name="Sheet1")  
..     df2.to_excel(writer, sheet_name="Sheet2")  
7