Pandas дамп фрейма данных для Excel с цветовым форматированием - PullRequest
1 голос
/ 07 мая 2020

У меня есть большой pandas фрейм данных df как:

Sou ATC   P25   P75 Avg
A   11    9     15  10
B   6.63  15    15  25
C   6.63  5     10  8

Я хочу распечатать этот фрейм данных в файл Excel, но я хочу применить форматирование к каждой строке файла Excel, чтобы следующее правила применяются к ячейкам в столбцах ATC и Avg:

  • окрашены в красный цвет, если значение меньше P25
  • окрашены в зеленый цвет, если значение больше P75
  • окрашивается в желтый цвет, если значение находится между P25 и P75

Пример отображения в Excel выглядит следующим образом:

enter image description here

Я не знаю, как к этому подойти.

1 Ответ

1 голос
/ 07 мая 2020

Вы можете использовать style.Styler.apply с DataFrame of styles с numpy.select для заполнения масками, созданными DataFrame.lt и DataFrame.gt:

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

   cols = ['ATC','Avg']
   m1 = x[cols].lt(x['P25'], axis=0)
   m2 = x[cols].gt(x['P75'], axis=0)
   arr = np.select([m1, m2], [c1, c2], default=c3)

   df1 = pd.DataFrame(arr, index=x.index, columns=cols)
   return df1.reindex(columns=x.columns, fill_value=c)

df.style.apply(color,axis=None).to_excel('format_file.xlsx', index=False, engine='openpyxl')

pic

...