Как оформить транспонированный MultiIndex DataFrame - PullRequest
1 голос
/ 30 апреля 2020

Я пытаюсь отформатировать следующий транспонированный мультииндексный фрейм данных:

        0   1   2   3
B   sum 22  22  0   0
    d   0   0   -22 -22
    d%  0   0   -1  -1
C   sum 30  15  30  60
    d   0   15  0   30
    d%  0   -0.5    1

Я хотел бы применить style.bar и style.format("{:.2%}" к строкам с индексом второго уровня, заканчивающимся на %, но я не могу понять, как subset в строках в кадре данных MultiIndex.

Я пытался поиграть с IndexSlice и многими другими подходами, но безрезультатно. Есть ли способ сделать это?

1 Ответ

1 голос
/ 30 апреля 2020

После некоторой игры, передача кортежей в subset работает:

rows = [idx for idx in df.index if idx[1][-1]=='%']
df.style.format("{:.2%}",subset=(rows,pd.IndexSlice[:]))
# equivalently
# df.style.format("{:.2%}",subset=(rows,df.columns))

Вывод:

                   0        1              2    3
B   sum            0        1              2    3
     d%      400.00%     500.00%     600.00%    700.00%
C   sum            8           9          10    11
     d%     1200.00%    1300.00%    1400.00%    1500.00%
...