Стилизация подмножеств (неуникального) многоуровневого индексного фрейма данных в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Стилизация подмножеств (неуникального) многоуровневого индексного фрейма данных в Python

Сообщение Гость »


Для иллюстрации у меня есть следующий фрейм данных:

` arrays = [np.array(['Джек', 'Джек', 'Джек', 'Джек', 'Джек', 'Джек', 'Джек', 'Джош', 'Джош', 'Джош', 'Джош ', 'Джош', 'Питер', 'Питер', 'Питер', 'Питер', 'Питер']), np.array(['Клиент A', 'Клиент A', 'Клиент A', 'Клиент A', 'Клиент B', 'Клиент B', 'Клиент B', 'Клиент C', 'Клиент C', «Клиент Д», «Клиент Д», «Клиент Д», «Клиент Е», «Клиент Е», «Клиент Е», «Клиент Е», «Клиент Е»]), np.array(['Машины', 'Поезда', 'Самолеты', 'Лодки', 'Машины', 'Поезда', 'Лодки', 'Машины', 'Поезда', 'Машины', 'Поезда', ' Самолеты», «Машины», «Поезда», «Самолеты», «Лодки», «Мотоциклы»])] df = pd.DataFrame(np.random.randn(17, 5)+100, индекс=массивы) df.columns = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница'] df.index.set_names(['Продавец', 'Клиент', 'Продукт'], inplace=True) `

Это по сути обзор продаж по продавцам/клиентам/продуктам.

Для всех строк, где «Продукт» равен «Автомобили», я хочу применить градиент фона к показателям продаж по всей строке. Аналогично, для всех строк, где «Продукт» равен «Поездам», я хочу применить текстовый градиент. В этом посте я сосредоточусь только на части фонового градиента, поскольку текстовый градиент будет аналогичен с точки зрения исполнения. В качестве дополнения, и я не знаю, возможно ли это, для ячеек, у которых не будет номера, я хочу, чтобы они имели серый цвет фона, и я хочу, чтобы ячейка самого индекса (то есть ячейки индекса, содержащие автомобили) чтобы иметь одинаковый серый цвет фона. Было бы неплохо иметь такую ​​возможность, основное внимание уделяется градиентному цвету фона/текста различных подмножеств.

Я видел похожую публикацию «Как мне стилизовать подмножество фрейма данных pandas?» который я пытался использовать в качестве основы и в итоге сделал следующее:

С моей цветовой картой cmap = matplotlib.colors.ListedColormap(["Red", "Green"]) и с использованием индексной срезки я получил

` idx = pd.IndexSlice df = df.style.background_gradient(cmap=cmap, axis=1, subset=df.loc[idx[:, :, 'Cars'], :]) `

Однако это не стилизует фрейм данных должным образом. Появилось следующее предупреждение: C:\ProgramData\anaconda3\lib\site-packages\IPython\core\formatters.py:342: FutureWarning: поведение индексации MultiIndex с вложенной последовательностью меток устарело и изменится в будущая версия. series.loc[label, Sequence] будет вызываться, если какие-либо члены 'sequence' или отсутствуют на втором уровне индекса. Чтобы сохранить старое поведение, используйте series.index.isin(sequence, level=1) метод возврата()

Но это относится к подмножеству, а не к стилю. Я также попытался подстроить его так, как это предлагается в предупреждении, но все равно получил то же предупреждение и без стилей.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»