2017-08-26 8 views
1

Ich versuche, den Text oder die Zellen des Datenrahmens basierend auf der Bedingung zu färben. Das ist der Code, den ich habe. Es funktioniert:Styling Pandas basierend auf Bedingungen

def Highlight_Majors(val): 

    color = 'blue' if val == "Austria" else 'black' 
    return 'color: %s' % color 

s = df.style.applymap(Highlight_Majors) 
s 

Die Zeichenkette "Österreich" erscheint nun im Datenrahmen hervorgehoben. Was ist, wenn ich mehr als ein Land habe, das ich hervorheben muss?

funktioniert das nicht:

def Highlight_Majors(val): 

    color = 'blue' if val == "Austria"|"Belgium" else 'black' 
    return 'color: %s' % color 

Was ist der richtige Weg, es zu tun?

Antwort

1

Verwenden Sie den in Operator mit einem Test der Zugehörigkeit:

def Highlight_Majors(val): 
    return 'color: %s' % ('blue' if val in {"Austria", "Belgium"} else 'black') 
0

Wie wäre es damit?

color = 'blue' if any([val==i for i in ["Austria", "Belgium"]]) else 'black' 
+1

Dank! Ich weiß nicht wer -1 gegeben hat. Es funktioniert für mich –

+1

@ prashanthmanohar _Don't_ this. Es ist sehr langsam. Ich gab es eine -1, weil es eine schlechte Art zu testen ist. Siehe meine Antwort für Details. –

+0

@coldspeed Ich nehme an, Downvote ist für "Antwort nicht nützlich" gedacht, aber in diesem Fall könnte dieser Ansatz nur eine andere Möglichkeit sein, das gleiche Ergebnis zu erzielen. Danke trotzdem! – Prem

Verwandte Themen