Page 1 of 1

Inkonsistente Ergebnisse mit Pandas Styler ApplyMap

Posted: 04 Mar 2025, 05:58
by Anonymous
Ich versuche also, einen Pandas -Datenframe für eine Streamlit -App zu stylen. Ich konnte es mit dem folgenden Code angemessen stylen: < /p>
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9], 'X': [10, 11, 12], 'Y': [13, 14, 15], 'Z': [16, 17, 18]})

default_colors = {
"A": "brown",
"B": "blue",
"C": "green",
"X": "orange",
"Y": "red",
"Z": "purple"
}

def highlight_columns(val, color):
return f'color: {color}; font-weight: bold;' if val else ''

if 'A' in df.columns:
styled_df.applymap(lambda val: highlight_columns(val, default_colors['A']), subset=['A'])

if 'B' in df.columns:
styled_df.applymap(lambda val: highlight_columns(val, default_colors['B']), subset=['B'])

if 'C' in df.columns:
styled_df.applymap(lambda val: highlight_columns(val, default_colors['C']), subset=['C'])

if 'X' in df.columns:
styled_df.applymap(lambda val: highlight_columns(val, default_colors['X']), subset=['X'])

if 'Y' in df.columns:
styled_df.applymap(lambda val: highlight_columns(val, default_colors['Y']), subset=['Y'])

if 'Z' in df.columns:
styled_df.applymap(lambda val: highlight_columns(val, default_colors['Z']), subset=['Z'])
< /code>
Aber nach dem Refactoring mit: < /p>
for column in 'ABCXYZ':
if column in df.columns:
styled_df.applymap(lambda val: highlight_columns(val, default_colors[column]), subset=[column])
< /code>
Alle Spalten iteriert werden auf die endgültige Spaltenfarbe aktualisiert. In diesem Fall Spalte 'z'. Was ist hier los? Warum funktionieren die 6, wenn Aussagen gut funktionieren, aber die Schleife nicht?