Pandas XLSX-Export mit Hintergrundfarbe basierend auf Zellwert

English Deutsch

Dieses Beispielskript verwendet openpyxl, um die Hintergrundfarbe einer Zelle auf rot für False-Zellen oder auf grün für True-Zellen zu setzen. Beachten, dass die booleschen Werte in "True"- oder "False"-Strings umgewandelt werden, basierend auf der Methode aus unserem vorherigen Beitrag Pandas Bool-Spalte als True/False statt 1/0 in XLSX schreiben. Weitere Details zum Setzen der Hintergrundfarbe in OpenPyXL finden sich in unserem Beitrag Zellhintergrundfarbe in OpenPyXL setzen.

pandas_color_example.py
import pandas as pd
from openpyxl.styles import PatternFill

df = pd.DataFrame([
    {"a": True},
    {"a": False},
    {"a": True},
    {"a": False},
    {"a": False},
])
df["a"] = df["a"].map({True: "True", False: "False"})
with pd.ExcelWriter("out.xlsx", engine="openpyxl") as writer:
    sheet_name = "Bool"
    # Export DataFrame content
    df.to_excel(writer, sheet_name=sheet_name)
    # Set backgrund colors depending on cell values
    sheet = writer.sheets[sheet_name]
    for cell, in sheet[f'B2:B{len(df) + 1}']: # Skip header row, process as many rows as there are DataFrames
        value = df["a"].iloc[cell.row - 2] # value is "True" or "False"
        cell.fill = PatternFill("solid", start_color=("5cb800" if value == "True" else 'ff2800'))

Die Ausgabe dieses Skripts sieht so aus:

Pandas XLSX-Export mit grünem Hintergrund für True-Zellen und rotem Hintergrund für False-Zellen


Check out similar posts by category: OpenPyXL, Python