簡體   English   中英

Python Pandas Append 到現有的 excel 與匹配的列

[英]Python Pandas Append to existing excel with matched columns

我正在嘗試將 append 和 dataframe 轉換為現有的 excel 文件。 下面的代碼檢查文件是否存在並附加它。 但問題是,如果我的文件中少了一列,則無法將內容與右列匹配。 如何讓 pandas 檢查現有的列名並將其與我的 dataframe 匹配,然后再附加它?

    if os.path.isfile(output_file):
    book = load_workbook(output_file)
    writer = pd.ExcelWriter(output_file, engine='openpyxl', mode='a')
    writer.book = book
    writer.sheets = {ws.title: ws for ws in book.worksheets}

    for sheetname in writer.sheets:
        source_df.to_excel(writer,
            sheet_name=sheetname, 
            startrow=writer.sheets[sheetname].max_row, 
            columns= ['A','B','D'],
            index = False,
            header= False)

    writer.save()
else:
    source_df.to_excel(output_file, index=False)

現有 Excel:

A B C D
1 2 3 4
5 6 7 8

我的數據框:

A B D
1 2 3

我想要的是:

A B C D
1 2 3 4
5 6 7 8
1 2   3

我得到了什么(它將 D 列寫入 C 列)

A B C D
1 2 3 4
5 6 7 8
1 2 3

您的方法的一個可能替代方法是執行以下操作:

假設您的 dataframe 看起來像這樣:

A  B  D
0  1  2  3
1  1  2  3
2  1  2  3

並且您的 excel 文件(稱為 filetoupdate)看起來像這樣:

在此處輸入圖像描述

然后將產生以下代碼:

df_append=pd.read_csv(r"C:\users\k_sego\df2.csv", sep=";" )

to_update = {"shee": df_append}  #I called the sheet 'shee'

file_name = r"C:\....\filetoupdate.xlsx"
excel_reader = pd.ExcelFile(file_name)
excel_writer = pd.ExcelWriter(file_name)

for sheet in excel_reader.sheet_names:
    sheet_df = excel_reader.parse(sheet)
    append_df = to_update.get(sheet)

    if append_df is not None:
        sheet_df = pd.concat([sheet_df, append_df], axis=0)

    sheet_df.to_excel(excel_writer, sheet, index=False)

excel_writer.save()

這個excel文件

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM