Mam ramkę danych w pandach z wieloma kolumnami. Mam zadanie kodowania kolorem określonej komórki w kolumnie A, jeśli warunek jest zgodny z kolumną C. tu wpisz opis obrazu

Załączam przykład. Chcę zastosować trzy różne warunki do kolumny C

 1. If Column C = poor than Column A = red color
 2. If Column C = good then Column A = Orange color
 3. If Column C = very good then Column A = Green color 

Z góry dziękuję!

2
Bapu's Sword 19 listopad 2019, 15:47
Czego spróbowałeś do tej pory? Zapoznaj się z Jak zadać dobre pytanie i Centrum pomocy, jak zadać pytanie.
 – 
LeoE
19 listopad 2019, 15:52

1 odpowiedź

Użyj Styler.apply z funkcją niestandardową z numpy.select, aby wybrać kolory według warunków:

df = pd.DataFrame({
         'A':[1,3,5,7],
         'B':list('abcd'),
         'C':['poor','good','very good','unknown'],

})
print (df)
   A  B          C
0  1  a       poor
1  3  b       good
2  5  c  very good
3  7  d    unknown

def color(x): 
   c1 = 'background-color: red'
   c2 = 'background-color: orange'
   c3 = 'background-color: green'
   c = 'background-color: '

   m1 = x['C'] == 'poor'
   m2 = x['C'] == 'good'
   m3 = x['C'] == 'very good'

   df = pd.DataFrame(c, index=x.index, columns=x.columns)
   df['A'] = np.select([m1, m2, m3], [c1, c2, c3], default=c)
   return df

df.style.apply(color,axis=None)

#if want output in excel file
#df.style.apply(color,axis=None).to_excel('styled.xlsx', engine='openpyxl', index=False)
0
jezrael 19 listopad 2019, 16:07