我怎样才能从列表或数据框中input值到现有的Excel文件中的每个单元格?

所以基本上,我想用新数据更新工作表,覆盖Excel中现有的单元格。 这两个文件具有相同的列名称(我不想创build一个新的工作簿,也不添加一个新的列)。

在这里,我正在检索我想要的数据:

import pandas as pd df1 = pd.read_csv print(df1) 

输出(我只是复制和粘贴前5行,总共有约500行):

  Index Type Stage CDID Period Index Value 0 812008000 6 2 JTV9 201706 121.570 1 812008000 6 2 JTV9 201707 121.913 2 812008000 6 2 JTV9 201708 121.686 3 812008000 6 2 JTV9 201709 119.809 4 812008000 6 2 JTV9 201710 119.841 5 812128000 6 1 K2VA 201706 122.030 

现有的Excel文件与df1具有相同的列(和行总数),但是我只是希望使用新值重新填充“索引”列。 我们只是说它看起来像这样(即所以我想索引的前面的值进入相应的列):

  Index Type Stage CDID Period Index Value 0 512901100 6 2 JTV9 201706 121.570 1 412602034 6 2 JTV9 201707 121.913 2 612307802 6 2 JTV9 201708 121.686 3 112808360 6 2 JTV9 201709 119.809 4 912233066 6 2 JTV9 201710 119.841 5 312128003 6 1 K2VA 201706 122.030 

在这里,我正在检索的Excel文件,并试图覆盖它:

 from win32com.client import Dispatch import os xl = Dispatch("Excel.Application") xl.Visible = True wbs_path = ('folder path') for wbname in os.listdir(wbs_path): if not wbname.endswith("file name.xlsx"): continue wb = xl.Workbooks.Open(wbs_path + '\\' + wbname) sh = wb.Worksheets("sheet name") sh.Range("A1:A456").Value = df1[["Index"]] wb.Save() wb.Close() xl.Quit() 

但是这没有任何作用。 如果我inputstring,例如:

 h.Range("A1:A456").Value = 'o', 'x', 'c' 

这通过A1到A456(它更新电子表格)在单元格中重复o,但忽略x和c。 我已经尝试将df1转换为列表和numpy数组,但是这不起作用。

有谁知道一个解决scheme或替代解决方法?

如果数据框的索引相同,则可以使用update()更新列。 它可以这样工作:

 df1.update(df2['Index'].to_frame()) 

注意:可能不需要frame()

编辑:

由于您尝试更新Excel文件而不是数据框,我的答案可能是不够的。 对于这部分,我build议将文件加载到数据框中,更新数据并保存。

 df1 = pd.read_excel('file.xlsx', sheet_name='sheet_name') # do the update writer = pd.ExcelWriter('file.xlsx') df1.to_excel(writer,sheet_name='sheet_name', engine='xlsxwriter') writer.save()