Раскраска сводной таблицы Panda DataFrame - PullRequest
2 голосов
/ 03 февраля 2020

У меня есть сводная таблица, созданная с использованием pandas, которая выглядит следующим образом:

**Account** AA-PRD  AB-PRD  AC-PRD  AD-PRD

**Product** 10      20      30      50

PROD1       50      50      60      12

PROD2       44      78      567     678

PROD3       56      234     45      77

Я хочу применить цвет ко всему столбцу на основе имени учетной записи, начиная с. Пример: если имя учетной записи начинается с «AA», цвет = желтый, если начинается с «AB», тогда цвет = красный

Как я могу сделать это в python и сохранить его в файле Excel? «Учетная запись» использовалась как «столбцы» в функции pd.pivot_table. Используемый ниже код для создания сводной таблицы

df_summary_table = pd.pivot_table(df_final,values=["cost"],index = "Product", columns="Account")

1 Ответ

2 голосов
/ 03 февраля 2020

Вы можете создать DataFrame стилей с помощью Styler.apply и установить строки по маскам с помощью loc:

def color(x): 
   c1 = 'background-color: yellow'
   c2 = 'background-color: red'
   c = ''
   m1 = x.columns.str.startswith('AA')
   m2 = x.columns.str.startswith('AB')

   df1 = pd.DataFrame(c, index=x.index, columns=x.columns)
   df1.loc[:, m1] = c1
   df1.loc[:, m2] = c2
   return df1

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