Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数据框附加到excelsheet,而不是覆盖它_Python_Excel_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 将数据框附加到excelsheet,而不是覆盖它

Python 将数据框附加到excelsheet,而不是覆盖它,python,excel,python-3.x,pandas,dataframe,Python,Excel,Python 3.x,Pandas,Dataframe,我想将panda dataframedf的内容附加到Excel工作表中 这就是我所做的 df.to_excel(excel_writer="target.xlsx", sheet_name="sheet_1") 此代码的问题在于它会覆盖target.xlsx。因此,我在target.xlsx中丢失了所有旧数据。我想让代码做的是附加,而不是覆盖excel工作表 我正在使用python 3.7 我认为最简单的方法是: import pandas as pd import numpy as np i

我想将panda dataframe
df
的内容附加到Excel工作表中

这就是我所做的

df.to_excel(excel_writer="target.xlsx", sheet_name="sheet_1")
此代码的问题在于它会覆盖
target.xlsx
。因此,我在
target.xlsx
中丢失了所有旧数据。我想让代码做的是附加,而不是覆盖excel工作表


我正在使用python 3.7

我认为最简单的方法是:

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。

在target_df中加载'target.xlsx'。 然后


我想它应该很好用。然后将其保存回'target.xlsx'。

如果您想添加新的工作表,下面是您的答案

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')
来源:

试试这个:

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()

您只需读取target.xlsx中存储的数据并将其存储在数据帧中即可。现在,使用
pandas
concat()
方法,您可以合并两个数据框(新数据框和旧数据框),最后将它们存储在同一个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)

我希望有帮助

可能的重复读取excel文件中的所有数据,用python将其合并,然后将其写回excel是否有意义?@Sosel,我的excel工作表还有其他几个与数据框无关的工作表。这可能会对您有所帮助:当我做更多excel和python工作时,MaxU的回答对我有用。这可能是最好的答案。
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()
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)