2017-01-19 1 views
2

私は、列とフォーマット番号を強調表示するためにスタイナーでパンダのデータフレームをフォーマットしています。私はまた、より明確で、快適で読みやすいようにマルチインデックスを適用したい。スタイラーをサブセットの列に適用するので、マルチインデックスで作業することはできません。マルチインデックスのパンダスタイルのオブジェクト

例:

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

はあなたに感謝します!

答えて

5

は、私はあなたがpd.IndexSlice[...]メソッドを使用することができると思う:

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

デモ:Jupyterで

In [5]: data.loc[pd.IndexSlice[:, 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 

enter image description here

+0

ありがとうございました!私はマルチインデックスをスライスして自分自身を教育しました。私がパンダで見逃したこと。 –

関連する問題