Trang tính đã tồn tại và if_sheet_exists được đặt thành lỗi

@Kaydeann

Không có nghĩa là xóa toàn bộ sổ làm việc, chỉ những trang tính bạn không cần

Nói rằng bạn có nguồn. xlsx và đích đến. xlsx

Cả hai đều có tờ sau. sheet1, sheet2 và sheet3

Bạn chỉ muốn sao chép sheet1 và sheet2 từ nguồn. xlsx đến đích. xlsx

ở điểm đến. xlsx, xóa sheet1 và sheet2

từ nguồn. xlsx, sao chép sheet1 và sheet2 đến đích. xlsx

Theo cách đó, sheet3 ở đích. xlsx sẽ không bị ảnh hưởng

Liệu điều đó có hiệu quả?

Tôi đang chạy một quy trình chạy mỗi tuần một lần. sau khi chạy nó báo lỗi " Sheet đã tồn tại". Tôi đã đi đến trang tính mà thông tin đang được xuất ra và tạo một trang tính mới để chuyển thông tin đến và cũng thêm nó vào tệp đầu ra trong alteryx. Tại sao lỗi xuất hiện?

lớp pandas ExcelWriter() được sử dụng để lưu DataFrame vào trang tính Excel. Lớp này chủ yếu được sử dụng khi bạn muốn lưu nhiều trang tính và nối thêm dữ liệu vào trang tính Excel hiện có

Các điểm chính của pandas ExcelWriter

  • Theo mặc định, nó sử dụng xlsxwriter nếu nó được cài đặt, nếu không, nó sử dụng openpyxl
  • Hỗ trợ lưu nhiều DataFrames vào một trang tính
  • Bạn có thể báo lỗi khi tệp đã tồn tại
  • Lưu nhiều trang tính, nối thêm trang tính hoặc tệp hiện có

1. Ví dụ nhanh về pandas ExcelWriter()

Sau đây là một số ví dụ về cách sử dụng lớp pandas ExcelWriter() với các ví dụ


# Write excel file with default behaviour.
with pd.ExcelWriter("courses.xlsx") as writer:
    df.to_excel(writer) 

# Write to Multiple Sheets
with pd.ExcelWriter('Courses.xlsx') as writer:
    df.to_excel(writer, sheet_name='Technologies')
    df2.to_excel(writer, sheet_name='Schedule')

# Append DataFrame to existing excel file
with pd.ExcelWriter('Courses.xlsx',mode='a') as writer:  
    df.to_excel(writer, sheet_name='Technologies')

Hãy tạo một DataFrame gấu trúc từ danh sách và sử dụng các ví dụ được chỉ định ở trên để chạy và khám phá đầu ra


import pandas as pd
import numpy as np
# Create DataFrame from multiple lists
technologies =  ['Spark','Pandas','Java','Python', 'PHP']
fee = [25000,20000,15000,15000,18000]
duration = ['5o Days','35 Days',np.nan,'30 Days', '30 Days']
discount = [2000,1000,800,500,800]
columns=['Courses','Fee','Duration','Discount']
df = pd.DataFrame(list(zip(technologies,fee,duration,discount)), columns=columns)
print(df)

# Outputs
#  Courses    Fee Duration  Discount
#0   Spark  25000  5o Days      2000
#1  Pandas  20000  35 Days      1000
#2    Java  15000      NaN       800
#3  Python  15000  30 Days       500
#4     PHP  18000  30 Days       800

2. Cú pháp ExcelWriter()

Sau đây là cú pháp của lớp ExcelWrite. Đối tượng của lớp này được sử dụng làm đối số cho DataFrame. hàm to_excel() để ghi DataFrame vào bảng excel


# Syntax of pandas.ExcelWriter
class pandas.ExcelWriter(path, engine=None, date_format=None, datetime_format=None, mode='w', storage_options=None, if_sheet_exists=None, engine_kwargs=None, **kwargs)

Sau đây là một số thông số

  • 
    import pandas as pd
    import numpy as np
    # Create DataFrame from multiple lists
    technologies =  ['Spark','Pandas','Java','Python', 'PHP']
    fee = [25000,20000,15000,15000,18000]
    duration = ['5o Days','35 Days',np.nan,'30 Days', '30 Days']
    discount = [2000,1000,800,500,800]
    columns=['Courses','Fee','Duration','Discount']
    df = pd.DataFrame(list(zip(technologies,fee,duration,discount)), columns=columns)
    print(df)
    
    # Outputs
    #  Courses    Fee Duration  Discount
    #0   Spark  25000  5o Days      2000
    #1  Pandas  20000  35 Days      1000
    #2    Java  15000      NaN       800
    #3  Python  15000  30 Days       500
    #4     PHP  18000  30 Days       800
    
    1 – Đường dẫn nơi lưu tệp
  • 
    import pandas as pd
    import numpy as np
    # Create DataFrame from multiple lists
    technologies =  ['Spark','Pandas','Java','Python', 'PHP']
    fee = [25000,20000,15000,15000,18000]
    duration = ['5o Days','35 Days',np.nan,'30 Days', '30 Days']
    discount = [2000,1000,800,500,800]
    columns=['Courses','Fee','Duration','Discount']
    df = pd.DataFrame(list(zip(technologies,fee,duration,discount)), columns=columns)
    print(df)
    
    # Outputs
    #  Courses    Fee Duration  Discount
    #0   Spark  25000  5o Days      2000
    #1  Pandas  20000  35 Days      1000
    #2    Java  15000      NaN       800
    #3  Python  15000  30 Days       500
    #4     PHP  18000  30 Days       800
    
    2 – Nhận các giá trị {‘error’, ‘new’, ‘replace’, ‘overlay’}, default ‘error’. Sử dụng điều này để tăng lỗi nếu trang tính tồn tại, thay thế nội dung hiện có bằng dữ liệu mới. nội dung lớp phủ ở cuối mà không xóa nội dung
  • 
    import pandas as pd
    import numpy as np
    # Create DataFrame from multiple lists
    technologies =  ['Spark','Pandas','Java','Python', 'PHP']
    fee = [25000,20000,15000,15000,18000]
    duration = ['5o Days','35 Days',np.nan,'30 Days', '30 Days']
    discount = [2000,1000,800,500,800]
    columns=['Courses','Fee','Duration','Discount']
    df = pd.DataFrame(list(zip(technologies,fee,duration,discount)), columns=columns)
    print(df)
    
    # Outputs
    #  Courses    Fee Duration  Discount
    #0   Spark  25000  5o Days      2000
    #1  Pandas  20000  35 Days      1000
    #2    Java  15000      NaN       800
    #3  Python  15000  30 Days       500
    #4     PHP  18000  30 Days       800
    
    3 – {‘w’, ‘a’}, mặc định là ‘w’. W để viết, a để nối thêm
  • lưu trữ_options –

3. Ví dụ ExcelWriter()

Bằng cách sử dụng pandas ExcelWriter(), hãy xem cách lưu DataFrame thành excel với các tham số mặc định


# Write excel file with default behaviour.
with pd.ExcelWriter("courses.xlsx") as writer:
    df.to_excel(writer) 

Điều này tạo ra một tệp excel với nội dung như dưới đây. Theo mặc định, Nó xuất tên cột, chỉ mục và dữ liệu sang trang tính có tên


import pandas as pd
import numpy as np
# Create DataFrame from multiple lists
technologies =  ['Spark','Pandas','Java','Python', 'PHP']
fee = [25000,20000,15000,15000,18000]
duration = ['5o Days','35 Days',np.nan,'30 Days', '30 Days']
discount = [2000,1000,800,500,800]
columns=['Courses','Fee','Duration','Discount']
df = pd.DataFrame(list(zip(technologies,fee,duration,discount)), columns=columns)
print(df)

# Outputs
#  Courses    Fee Duration  Discount
#0   Spark  25000  5o Days      2000
#1  Pandas  20000  35 Days      1000
#2    Java  15000      NaN       800
#3  Python  15000  30 Days       500
#4     PHP  18000  30 Days       800
4

Trang tính đã tồn tại và if_sheet_exists được đặt thành lỗi

4. Lưu vào nhiều trang tính

Lớp ExcelWriter cho phép bạn lưu hoặc xuất nhiều DataFrames gấu trúc sang các trang tính riêng biệt. Đầu tiên, bạn cần tạo một đối tượng cho ExcelWriter

Ví dụ dưới đây lưu dữ liệu từ đối tượng


import pandas as pd
import numpy as np
# Create DataFrame from multiple lists
technologies =  ['Spark','Pandas','Java','Python', 'PHP']
fee = [25000,20000,15000,15000,18000]
duration = ['5o Days','35 Days',np.nan,'30 Days', '30 Days']
discount = [2000,1000,800,500,800]
columns=['Courses','Fee','Duration','Discount']
df = pd.DataFrame(list(zip(technologies,fee,duration,discount)), columns=columns)
print(df)

# Outputs
#  Courses    Fee Duration  Discount
#0   Spark  25000  5o Days      2000
#1  Pandas  20000  35 Days      1000
#2    Java  15000      NaN       800
#3  Python  15000  30 Days       500
#4     PHP  18000  30 Days       800
0 vào trang tính có tên

import pandas as pd
import numpy as np
# Create DataFrame from multiple lists
technologies =  ['Spark','Pandas','Java','Python', 'PHP']
fee = [25000,20000,15000,15000,18000]
duration = ['5o Days','35 Days',np.nan,'30 Days', '30 Days']
discount = [2000,1000,800,500,800]
columns=['Courses','Fee','Duration','Discount']
df = pd.DataFrame(list(zip(technologies,fee,duration,discount)), columns=columns)
print(df)

# Outputs
#  Courses    Fee Duration  Discount
#0   Spark  25000  5o Days      2000
#1  Pandas  20000  35 Days      1000
#2    Java  15000      NaN       800
#3  Python  15000  30 Days       500
#4     PHP  18000  30 Days       800
1 và đối tượng

import pandas as pd
import numpy as np
# Create DataFrame from multiple lists
technologies =  ['Spark','Pandas','Java','Python', 'PHP']
fee = [25000,20000,15000,15000,18000]
duration = ['5o Days','35 Days',np.nan,'30 Days', '30 Days']
discount = [2000,1000,800,500,800]
columns=['Courses','Fee','Duration','Discount']
df = pd.DataFrame(list(zip(technologies,fee,duration,discount)), columns=columns)
print(df)

# Outputs
#  Courses    Fee Duration  Discount
#0   Spark  25000  5o Days      2000
#1  Pandas  20000  35 Days      1000
#2    Java  15000      NaN       800
#3  Python  15000  30 Days       500
#4     PHP  18000  30 Days       800
2 vào trang tính có tên

import pandas as pd
import numpy as np
# Create DataFrame from multiple lists
technologies =  ['Spark','Pandas','Java','Python', 'PHP']
fee = [25000,20000,15000,15000,18000]
duration = ['5o Days','35 Days',np.nan,'30 Days', '30 Days']
discount = [2000,1000,800,500,800]
columns=['Courses','Fee','Duration','Discount']
df = pd.DataFrame(list(zip(technologies,fee,duration,discount)), columns=columns)
print(df)

# Outputs
#  Courses    Fee Duration  Discount
#0   Spark  25000  5o Days      2000
#1  Pandas  20000  35 Days      1000
#2    Java  15000      NaN       800
#3  Python  15000  30 Days       500
#4     PHP  18000  30 Days       800
3

________số 8

3. Nối vào tệp Excel hiện có

ExcelWriter có thể được sử dụng để nối thêm DataFrame vào tệp excel. Sử dụng tham số


import pandas as pd
import numpy as np
# Create DataFrame from multiple lists
technologies =  ['Spark','Pandas','Java','Python', 'PHP']
fee = [25000,20000,15000,15000,18000]
duration = ['5o Days','35 Days',np.nan,'30 Days', '30 Days']
discount = [2000,1000,800,500,800]
columns=['Courses','Fee','Duration','Discount']
df = pd.DataFrame(list(zip(technologies,fee,duration,discount)), columns=columns)
print(df)

# Outputs
#  Courses    Fee Duration  Discount
#0   Spark  25000  5o Days      2000
#1  Pandas  20000  35 Days      1000
#2    Java  15000      NaN       800
#3  Python  15000  30 Days       500
#4     PHP  18000  30 Days       800
3 với giá trị

import pandas as pd
import numpy as np
# Create DataFrame from multiple lists
technologies =  ['Spark','Pandas','Java','Python', 'PHP']
fee = [25000,20000,15000,15000,18000]
duration = ['5o Days','35 Days',np.nan,'30 Days', '30 Days']
discount = [2000,1000,800,500,800]
columns=['Courses','Fee','Duration','Discount']
df = pd.DataFrame(list(zip(technologies,fee,duration,discount)), columns=columns)
print(df)

# Outputs
#  Courses    Fee Duration  Discount
#0   Spark  25000  5o Days      2000
#1  Pandas  20000  35 Days      1000
#2    Java  15000      NaN       800
#3  Python  15000  30 Days       500
#4     PHP  18000  30 Days       800
5 để nối thêm. Đoạn mã dưới đây mở một tệp hiện có và thêm dữ liệu từ DataFrame vào trang tính đã chỉ định


import pandas as pd
import numpy as np
# Create DataFrame from multiple lists
technologies =  ['Spark','Pandas','Java','Python', 'PHP']
fee = [25000,20000,15000,15000,18000]
duration = ['5o Days','35 Days',np.nan,'30 Days', '30 Days']
discount = [2000,1000,800,500,800]
columns=['Courses','Fee','Duration','Discount']
df = pd.DataFrame(list(zip(technologies,fee,duration,discount)), columns=columns)
print(df)

# Outputs
#  Courses    Fee Duration  Discount
#0   Spark  25000  5o Days      2000
#1  Pandas  20000  35 Days      1000
#2    Java  15000      NaN       800
#3  Python  15000  30 Days       500
#4     PHP  18000  30 Days       800
0

Sự kết luận

Trong bài viết này, bạn đã học cú pháp của lớp ExcelWrite, cách sử dụng nó để lưu nhiều DataFrame vào tệp excel, nối thêm vào trang tính hiện có e. t. c