Ich versuche Zellen Zellen abhängig von den Werten in einer anderen Spalte zu färben.Pandas Styling mit Bedingungen
import pandas as pd
df = pd.DataFrame({'a':[1,2,3],'b':[1.5,3,6],'c':[2.2,2.9,3.5]})
df
a b c
0 1 1.5 2.2
1 2 3.0 2.9
2 3 6.0 3.5
Zum Beispiel in den obigen df I b rot gefärbt, wenn c> b will. Also würde die Zelle df [0, b] hervorgehoben sein, aber keine der anderen.
Ich habe mehrere Versuche gemacht, aber im Allgemeinen, was ich habe sieht aus wie die unten
def highlight(val1,val2):
color = 'red' if val1 < val2 else 'black'
return 'color: %s' % color
df.style.apply(lambda x: highlight(x.data.b,x.data.c), axis = 1,subset=['b'])
TypeError: ('memoryview: invalid slice key', 'occurred at index 0')
Ich habe keine Beispiele in der documentation sehen. Sie verwenden im Allgemeinen Bedingungen für eine einzelne Spalte, z. B. das Hervorheben eines Maximums oder eines Minimums innerhalb einer Spalte oder das gesamte df.
Vielleicht ist das, was ich will, derzeit nicht möglich? Aus der Dokumentation:
Nur Label-basierte Slicing wird jetzt unterstützt, nicht positionsabhängig.
Wenn Ihre Stilfunktion ein Teilmengen- oder Achsenschlüsselwortargument verwendet, erwägen Sie, Ihre Funktion in ein functools.partial zu verpacken, indem Sie dieses Schlüsselwort ausgliedern.
um, warum Sie verwenden 'x.data' ? Das gibt ein 'memoryview'-Objekt zurück ... –