python – 具有多索引的Pandas样式对象

我正在使用样式器格式化pandas数据框以突出显示列和格式数字.我还想应用多索引更清晰,愉快和易读.由于我将Styler应用于列的子集,因此无法使用多索引.

例:

arrays = [np.hstack([['One']*2,['Two']*2]),['A','B','C','D']]
columns = pd.MultiIndex.from_arrays(arrays)
data =  pd.DataFrame(np.random.randn(5,4),columns=list('ABCD'))
data.columns = columns 
import seaborn as sns
cm = sns.light_palette("green",as_cmap=True)
data.style.background_gradient(cmap=cm,subset=['A'])

有没有办法对列进行子集,以便样式器可以工作.根据以下来源,这是实现的,但没有例子,所以我很难理解如何应用它:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.formats.style.Styler.html
https://github.com/pandas-dev/pandas/issues/11655

谢谢 !

解决方法

我认为你可以使用 pd.IndexSlice[…]方法

data.style.background_gradient(cmap=cm,subset=pd.IndexSlice[:,pd.IndexSlice[:,'A']])

演示:

In [5]: data.loc[pd.IndexSlice[:,'A']]]
Out[5]:
        One
          A
0 -0.808483
1  0.009371
2  0.977138
3 -0.875554
4 -0.052424

In [6]: data
Out[6]:
        One                 Two
          A         B         C         D
0 -0.808483 -2.280683  0.576145  0.649688
1  0.009371  0.721510  1.013764 -0.157493
2  0.977138  1.441392  1.718618 -0.320826
3 -0.875554 -1.060507  1.457075  0.570195
4 -0.052424 -0.742842 -0.203830 -1.202091

在Jupyter:

enter image description here

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...