Pandas Styler 按值对列进行子集化
Pandas Styler Subset column by values
我正在使用以下方法为数据框中的单元格着色:
import seaborn as sns
cm1 = sns.diverging_palette(h_pos=130, h_neg=10, s=99, l=55, n=99, as_cmap=True)
df_s = (df.style
.background_gradient(cmap=cm1, subset=['col1']))
这成功地将背景渐变应用于 col1
中的值
但是,我想要如下内容:
df_s = (df.style
.background_gradient(cmap=cm1, subset=['col1'] < x))
哪个不起作用
想法是仅将渐变应用于 col1
中小于 x
的值,并显示 col1 >= x
未着色的完整数据帧。
似乎应该有一种简单的方法可以做到这一点,但我似乎无法将参数转换为 subset
的正确格式。
在此先感谢您的帮助!
您需要使用pd.IndexSlice
:
import seaborn as sns
cm1 = sns.diverging_palette(h_pos=130, h_neg=10, s=99, l=55, n=99, as_cmap=True)
np.random.seed(123)
df = pd.DataFrame(np.random.randint(0,100,(5,5)), columns=[*'ABCDE'])
df.style.background_gradient(cmap=cm1, subset=pd.IndexSlice[df['C']<50, 'C'])
输出:
我正在使用以下方法为数据框中的单元格着色:
import seaborn as sns
cm1 = sns.diverging_palette(h_pos=130, h_neg=10, s=99, l=55, n=99, as_cmap=True)
df_s = (df.style
.background_gradient(cmap=cm1, subset=['col1']))
这成功地将背景渐变应用于 col1
但是,我想要如下内容:
df_s = (df.style
.background_gradient(cmap=cm1, subset=['col1'] < x))
哪个不起作用
想法是仅将渐变应用于 col1
中小于 x
的值,并显示 col1 >= x
未着色的完整数据帧。
似乎应该有一种简单的方法可以做到这一点,但我似乎无法将参数转换为 subset
的正确格式。
在此先感谢您的帮助!
您需要使用pd.IndexSlice
:
import seaborn as sns
cm1 = sns.diverging_palette(h_pos=130, h_neg=10, s=99, l=55, n=99, as_cmap=True)
np.random.seed(123)
df = pd.DataFrame(np.random.randint(0,100,(5,5)), columns=[*'ABCDE'])
df.style.background_gradient(cmap=cm1, subset=pd.IndexSlice[df['C']<50, 'C'])
输出: