Python 如何将数据框附加到现有excel工作表?

Python 如何将数据框附加到现有excel工作表?,python,pandas,xlrd,xlsxwriter,Python,Pandas,Xlrd,Xlsxwriter,该函数被多次调用。我保留了一个计数,以便在第一次调用时创建工作簿。然后我使用pd.ExcelWrite()写入该工作簿。下次执行else:并打开同一工作簿时。选择其第一张图纸,找到其最后一行。数据帧就写在这一行上。 这是我的代码: def WriteFile (df): if count1 == 1: workbook = xlsxwriter.Workbook('pandas_simple.xlsx') writer = pd.ExcelWriter('pandas

该函数被多次调用。我保留了一个计数,以便在第一次调用时创建工作簿。然后我使用
pd.ExcelWrite()
写入该工作簿。下次执行
else:
并打开同一工作簿时。选择其第一张图纸,找到其最后一行。数据帧就写在这一行上。 这是我的代码:

def WriteFile (df):
  if count1 == 1:
      workbook = xlsxwriter.Workbook('pandas_simple.xlsx')
      writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')
      df.to_excel(writer, index=False )
      workbook.close()
  else:
      book = open_workbook('pandas_simple.xlsx')
      sheet_names = book.sheet_names()
      sheet = book.sheet_by_name(sheet_names[0])
      row = sheet.nrows
      writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')
      df.to_excel(writer, index=False, header=False, startrow = row )
我得到一个例外:

Exception Exception: Exception('Exception caught in workbook destructor. Explicit close() 
may be required for workbook.',) in <bound method Workbook.__del__ of <xlsxwriter.workbook.Workbook 
object at 0x000000000A143860>> ignored Exception
异常异常:异常('工作簿析构函数中捕获异常。显式关闭()
可能是工作簿“,”所必需的,在忽略的异常中
执行代码后,我的pandas_simple.xlsx也是空的。我做错了什么

多亏了@ski

请在同一问题上参考他的答案


您可以这样做:

df = pd.DataFrame(np.arange(1, 31), columns=['val'])
fn = 'd:/temp/test.xlsx'
count = 0

writer = pd.ExcelWriter(fn)

for chunk in np.split(df, 3):
    chunk.to_excel(writer, index=False, header=(count==0), startrow=count+(count!=0))
    count += len(chunk)

writer.save()
结果:


这种方法行不通。我有一个数据帧,我需要写在一个xlsx文件。这项工作正在循环中进行。Dataframe被重新加载,现在需要追加到同一个xlsx文件中。异常的可能重复很可能是由于没有通过
close()
save()
调用XlsxWriter工作簿析构函数造成的。错误消息试图对此进行提示。它可能无法解决您的整体问题,但作为第一步,您应该添加
close()
save()
以解决此异常。此外,您不能使用XlsxWriter重写或附加到文件,您只会得到一个新文件。
df = pd.DataFrame(np.arange(1, 31), columns=['val'])
fn = 'd:/temp/test.xlsx'
count = 0

writer = pd.ExcelWriter(fn)

for chunk in np.split(df, 3):
    chunk.to_excel(writer, index=False, header=(count==0), startrow=count+(count!=0))
    count += len(chunk)

writer.save()