如何使用过滤的数据框更新现有Excel工作表的一部分?

时间:2019-01-04 22:49:58

标签: excel pandas pandas.excelwriter

我有一本有几张纸的excel工作簿。我需要从一张工作表中读取一部分,获取经过过滤的数据框,然后将来自该过滤后的数据框的单个值写入同一张工作表中的特定单元格。最好是没有打开excel工作簿的最佳方法是什么?我需要在linux上运行它,所以不能使用xlwings。我不想写整个工作表,而只写其中的一个选定单元格/偏移量。我尝试将以下内容写入现有工作表,但似乎对我不起作用(所需单元格未发生更新):

with pd.ExcelWriter('test.xlsx', engine='openpyxl') as writer:
    writer.book = load_workbook('test.xlsx')
    df_filtered.to_excel(writer, 'Sheet_Name', columns=['CS'], startrow=638, startcol=96)

任何提示都会有所帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

如果您只写一个单元格,则下面的内容就足够了。

import pandas as pd
import openpyxl

df = pd.DataFrame(data=[1,2,3], columns=['col'])
filtered_dataframe = df[df.col == 1].values[0][0]

filename = 'test.xlsx'
wb = openpyxl.load_workbook(filename)
wb['Sheet1'].cell(column=1, row=2, value=filtered_dataframe)
wb.save(filename)

我相信您的问题是您从未调用过writer的save方法。