python - 从 Pandas 到excel的颜色格式

标签 python excel pandas dataframe

我有一个 Pandas 数据框,其中包含根据先前过滤的值和条件。我想在excel中打印我的数据框并根据过滤结果为单元格着色(如果通过:绿色,如果未通过:红色)。这是一个示例代码以及我希望它的结果。

filename='example'
writer = pd.ExcelWriter(f"{filename}.xlsx", engine="xlsxwriter")
workbook = writer.book
df = pd.DataFrame(
    [
        [0,{'value': 3, 'filter': 'passed'}],
        [1,{'value': 4, 'filter': 'not_passed'}],
        [2,{'value': 2, 'filter': 'passed'}],
    ],
    columns=['col 1', 'col 2']
)
df['col 2'] = df['col 2'].apply(lambda x: x['value'])
df.to_excel(writer, sheet_name="Sheet1")
green = workbook.add_format({"bg_color": "#C6EFCE", "font_color": "#006100"})
red = workbook.add_format({"bg_color": "#FFC7CE", "font_color": "#9C0006"})
worksheet = writer.sheets["Sheet1"]
writer.save()
Example output

最佳答案

使用 for 循环检查 filter value == 'passed'如果是,您可以将绿色格式应用于此单元格,反之亦然,使用 worksheet.write(row_index,column_index,value,format) 将红色应用于红色。
请注意,Pandas 数据框使用与 Excel 不同的索引方法。值得注意的是,Pandas 从 index=0 开始,Excel 从 index=1 开始。

filename='example'
writer = pd.ExcelWriter(f"{filename}.xlsx", engine="xlsxwriter")
workbook = writer.book
df = pd.DataFrame(
    [
        [0,{'value': 3, 'filter': 'passed'}],
        [1,{'value': 4, 'filter': 'not_passed'}],
        [2,{'value': 2, 'filter': 'passed'}],
    ],
    columns=['col 1', 'col 2']
)
# df['col 2'] = df['col 2'].apply(lambda x: x['value'])
df.to_excel(writer, sheet_name="Sheet1")

green = workbook.add_format({"bg_color": "#C6EFCE", "font_color": "#006100"})
red = workbook.add_format({"bg_color": "#FFC7CE", "font_color": "#9C0006"})

worksheet = writer.sheets["Sheet1"]

col_ind = 2

for row_ind in range(len(df)):
    value = df.iloc[row_ind, 1]
    
    if value['filter'] == 'passed':
        worksheet.write(row_ind+1,col_ind, value['value'], green)
    else:
        worksheet.write(row_ind+1,2col_ind, value['value'], red)

writer.save()

关于python - 从 Pandas 到excel的颜色格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70156578/

相关文章:

python - Django TextField 始终是必需的,尽管 blank=True,Null=True

vba - 保护允许通过 VBA 代码插入图像的 excel 工作表

python - Pandas :获取与查询关联的掩码

python - 理解函数中的 "return data_mine[' one'] = 1"

python - Pandas :从数据框中选择列

python - 如何将嵌套列表作为新列添加到现有的 Pandas 数据框中

python - py.test : get KeyboardInterrupt to call teardown

python - 从一个源WAV构造几个WAV文件

.net - Office 2003 互操作问题,未找到接口(interface)、方法

asp.net-mvc - 使用 .net MVC View 将 csv 或 excel 文件导入 SQL Server 2005 的最佳方法