【问题标题】:Append pandas dataframe to excelsheet, not overwrite it将熊猫数据框附加到 excelsheet,而不是覆盖它
【发布时间】:2020-01-30 09:17:55
【问题描述】:

我想将 panda 数据框 df 的内容附加到 excelsheet 中。

这就是我所做的;

df.to_excel(excel_writer="target.xlsx", sheet_name="sheet_1")

这段代码的问题是它覆盖了target.xlsx。结果,我丢失了target.xlsx 中的所有旧数据。我想要代码做的是追加,而不是覆盖 excel 表。

我正在使用 python 3.7。

【问题讨论】:

标签: python excel python-3.x pandas dataframe


【解决方案1】:

我认为最简单的方法是:

import pandas as pd
import numpy as np
import xlsxwriter

workbook = xlsxwriter.Workbook('arrays.xlsx')
worksheet = workbook.add_worksheet() # a created excel sheet

array = pd.read_csv('array.csv')
array = array.tolist()

row = 0

for col, data in enumerate(array):
    worksheet.write_column(row, col, data)

workbook.close()

这里是 xlsxwriter documentation

【讨论】:

    【解决方案2】:
    with pd.ExcelWriter('target.xlsx, mode='a') as writer:  
        df.to_excel(writer, sheet_name='sheet_1')
    

    来源:Pandas Dataframe to Excel

    【讨论】:

    • 这可能是最好的答案。
    【解决方案3】:

    在 target_df 中加载“target.xlsx”。 那么

    new_df = target_df.append(df)
    
    

    我猜它应该可以正常工作。然后将其另存为“target.xlsx”。

    【讨论】:

      【解决方案4】:

      如果您想添加新工作表,这就是您的答案。

      import pandas as pd
      
      # Open the existing excel file with all sheets
      df_dict = pd.read_excel('target.xlsx',sheet_name=None)
      
      with pd.ExcelWriter(fp) as writer:
      
           # Save the original sheets
           for sheet in df_dict:
                df[sheet].to_excel(writer, sheet_name=sheet)
      
           # If the new sheet name doesn't exist, append it
           if 'sheet_1' not in df_dict:
                df.to_excel(writer, sheet_name='sheet_1')
      

      【讨论】:

        【解决方案5】:

        您可以简单地读取存储在 target.xlsx 中的数据并将其存储在数据框中。现在,使用pandasconcat()的方法,可以将两个数据框(新数据框和旧数据框)合并到同一个excel文件中。

        代码片段:

        import pandas as pd
        old_df = pd.read_excel('target.xlsx')  
        frames = [old_df, new_df]
        result = pd.concat(frames)
        result.to_excel("target.xlsx", sheet_name="sheet_1", index=False)
        

        我希望它有所帮助。

        【讨论】:

          【解决方案6】:

          试试这个:

          from openpyxl import load_workbook
          writer = pandas.ExcelWriter('target.xlsx', engine='openpyxl') 
          writer.book = load_workbook('target.xlsx')
          writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
          df.to_excel(excel_writer=writer, sheet_name="sheet_1")
          writer.save()
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-02-08
            • 2017-06-13
            • 2014-01-03
            • 1970-01-01
            • 2019-01-14
            • 1970-01-01
            • 2019-10-22
            • 2021-09-24
            相关资源
            最近更新 更多