pandas 用Python填写Excel模板

ubof19bj  于 2023-04-04  发布在  Python
关注(0)|答案(1)|浏览(186)

我很难找到一个解决方案,以填写Excel模板使用Python.我目前有一个Pandasdataframe,我使用openpyxl写必要的数据到特定的行和单元格在一个for循环.我的问题是,在我的下一个项目中,我必须写的几个单元格是不连续的,所以例如,而不是去A1,A2,A3它可以去A1,A5,但是,如果这次我像过去一样列出单元格,那就不切实际了。
所以我在寻找一些类似于Excel中的Vlookup的东西。在模板中,我们有Python会匹配必要的行和列来删除信息。我知道我可能需要使用不同的命令。
我在下面添加了一张图片作为示例。因此,我需要在空单元格中放置值,理想情况下,Python将读取“USA and Revenue”并知道将该信息放置在单元格B2上。我知道我可能需要一些东西来Map它,我只是不确定如何开始,或者是否可能。
enter image description here

wvyml7n5

wvyml7n51#

我想你现在已经完成了你的项目,但对于未来可能的搜索:
您可以使用here中的公式并根据您的要求进行调整。

import pandas as pd
import openpyxl
from openpyxl.utils.dataframe import dataframe_to_rows

def df_to_excel(df, ws, header=False, index=False, startrow=0, startcol=0):
    """Write DataFrame df to openpyxl worksheet ws"""

    rows = dataframe_to_rows(df, header=header, index=index)

    for r_idx, row in enumerate(rows, startrow + 1):
        for c_idx, value in enumerate(row, startcol + 1):
            if value is not None:
                ws.cell(row=r_idx, column=c_idx).value = value
            else:
                pass

为了只使用一个数据框,公式字段的区域中可以存储None。例如,如果数据来自SQL,则可以在SQL中显式存储为NULL。

wb = openpyxl.Workbook()
df = pd.DataFrame({'USA':[1,2,3],
                   'Mexico':[4,5,6],
                   'Canada':[7,8,9], 
                   'Lating America':[None,None,None], 
                   'London':[1,2,3], 
                   'France':[1,2,3]})
df_to_excel(df, wb.active, startrow=2, startcol=2)

结果如下所示:

相关问题