У меня есть сводная таблица с суммой и len aggfunc. Я хотел бы отформатировать столбцы суммы в долларах, а длина как обычные числа с запятыми. Если бы я использовал группировку вместо pivot_table, я бы создал такой формат:

format_dict = {'sum':'${0:,.0f}K', 'len': '{0:,.0f}K'}

Это не похоже на сводную таблицу:

revenue_pivot = revenue_pivot.style.format(format_dict)

Это приводит к выводу таблицы, где значения имеют правильные десятичные разряды, но $ и K отсутствуют. Если я не использую словарь и формат, как это:

revenue_pivot = revenue_pivot.style.format('${0:,.0f}K')

Все значения в таблице будут отформатированы как $ 100K. Это сработало бы, если бы это было все доходы, но это не так, столбцы смешаны.

Вот воспроизводимый пример

import pandas as pd
import numpy as np
data = [
    {'name': 'ABC', 'Year': 2019, 'Revenue': 201.21},
    {'name': 'ABC', 'Year': 2019, 'Revenue': 13.11},
    {'name': 'ABC', 'Year': 2018, 'Revenue': 199.23},
    {'name': 'ABC', 'Year': 2018, 'Revenue': 39.0},
    {'name': 'DEF', 'Year': 2019, 'Revenue': 294.42},
    {'name': 'DEF', 'Year': 2019, 'Revenue': 241.57},
    {'name': 'DEF', 'Year': 2018, 'Revenue': 291.23},
]
df = pd.DataFrame(data)
pivot_obj = df.pivot_table(index='name', 
                               columns=['Year'], 
                               values='Revenue', 
                               aggfunc=[np.sum, len],
                               fill_value=0)
format_dict = {'sum':'${0:,.0f}', 'len': '${0:,.0f}'}
pivot_obj = pivot_obj.style.format(format_dict)
pivot_obj

Это приводит к

        sum             len
Year    2018    2019    2018    2019
name                
ABC     238.23  214.32   2       2
DEF     291.23  535.99   1       2

Цель будет

        sum             len
Year    2018    2019    2018    2019
name                
ABC     $238.23 $214.32  2       2
DEF     $291.23 $535.99  1       2
0
Craig