Pandas dataframe для превосходного форматирования цвета с использованием ExcelWriter и выравнивания по левому краю - PullRequest
0 голосов
/ 07 мая 2020

Есть ответ на аналогичную проблему в другом потоке здесь . Но я хочу узнать это, используя Pandas ExcelWriter

У меня есть большой 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

Обратите внимание на с выравниванием по левому краю column A. Мне также интересно узнать, как я могу использовать ExcelWriter для выравнивания вывода по левому краю в Excel.

Начальный код, который я использую прямо сейчас:

writer = pd.ExcelWriter(r'C:\outfile.xlx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='mysheet', index=False)
worksheet = writer.sheets['mysheet']

Я не знаете, как подойти к этому, помимо приведенного выше кода.

1 Ответ

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

Я бы использовал style:

def hightlighter(x):
    return np.select((x<df['P25'], x>df['P75']), 
              ('background-color: red', 'background-color: green'),
              'background-color: yellow')
def align(x):
    return ['text-align:left']*len(x)

(df.style
   .apply(hightlighter, subset=['ATC','Avg'])
   .apply(align, subset=['Source'])
   .to_excel(writer, sheet_name='mysheet', index=False, freeze_panes=(1,0))
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...