Как применить стиль к произвольному подмножеству кадра данных панд?В частности, у меня есть фрейм данных df
, который содержит несколько NaN, и я хочу применить к нему градиент фона везде, кроме случаев, когда есть NaN (с одинаковой картой цветов, примененной ко всем ячейкам).
Я знаю, чтоbackground_gradient
(и applymap
в более общем смысле) имеет параметр subset
, но я не понимаю из документации, как его использовать для выбора произвольного подмножества кадра данных.
import numpy as np
import pandas as pd
df = pd.DataFrame(data={'A': [0, 1, np.nan], 'B': [.5, np.nan, 0], 'C': [np.nan, 1, 1]})
mask = ~pd.isnull(df)
Тогда еслиЯ пытаюсь
df.style.background_gradient(subset=mask)
Я получаю ошибку:
IndexingError: Too many indexers
Я знаю, как применить стиль к подмножеству кадра данных в конкретном случае, когда это подмножество является декартовым произведениеминдексы и столбцы, используя что-то вроде решения здесь: Как мне стилизовать подмножество кадра данных панд? .Таким образом, вопрос заключается в том, что делать, когда подмножество не является таким продуктом, как в примере выше.
Одним из решений может быть цикл по столбцам и применение стиля столбец за столбцом (затем каждое приложение означает для подмножества декартовых произведений).В моем случае я могу передать параметры low
и high
методу background_gradient
, чтобы заставить цветовые карты совпадать между столбцами, но это не удается, когда (как указано выше) один или несколько из этих столбцов содержат уникальныйЗначение NaN.Это, в свою очередь, можно обойти, переписав функцию background_gradient
, но это явно нежелательно.