【问题标题】:Panda styler on multiIndexmultiIndex 上的熊猫造型器
【发布时间】:2019-11-23 01:40:21
【问题描述】:

我想在 multiIndex 的某个索引上设置 panda DataFrame 的样式。通常,pd.IndexSlice 应该按照this 的回答工作。

但是,如下图,这似乎行不通:

import pandas as pd
import itertools
import numpy as np
cv = ['data1_1','data1_2','data1_3']
param = ['data2_1', 'data2_2']
combi = tuple(itertools.product(cv,param))
columns = pd.MultiIndex.from_tuples(combi)
myData = pd.DataFrame(np.zeros((4,6), dtype=bool)*False, columns = columns)

myData.iloc[0,0] = True

def highligh(val):
    if val == True:
        color = 'red'
    else:
        color = 'white'
    return 'background-color: {}'.format(color)

myColoredData = myData.style.apply(highligh, subset=pd.IndexSlice[:,pd.IndexSlice[:,'data2_2']])


import seaborn as sns
cm = sns.light_palette("green", as_cmap=True)
myColoredData2 = myData.style.background_gradient(cmap=cm, subset=pd.IndexSlice[:,pd.IndexSlice[:,'data2_2']])

myData.loc[pd.IndexSlice[:,pd.IndexSlice[:,'data2_2']]]

myColoredData.to_excel('colored.xlsx')
myColoredData2.to_excel('colored2.xlsx')

to_excel 方法给我一个错误:

不可散列的类型:'sl​​ice'

【问题讨论】:

  • 我尝试重新创建您的示例,当我尝试显示 myColoredData 时,它在 myColoredData = myData.style.apply(highligh, subset=pd.IndexSlice[:,pd.IndexSlice[:,'data2_2']]) 部分之后中断了
  • 似乎是熊猫样式问题,因为myData.loc[pd.IndexSlice[:,pd.IndexSlice[:,'data2_2']]] 有效...

标签: python pandas dataframe


【解决方案1】:

截至目前,这似乎不起作用,就像stated here

请注意,此索引器以前在 pandas 0.22 版中工作,但在 0.24.2 中引入了回归

有趣的是,我在 0.24.2 上遇到了类似的问题,但在 0.23.4 上没有。

【讨论】:

    猜你喜欢
    • 2016-09-02
    • 2013-06-06
    • 2021-12-06
    • 2015-09-13
    • 2018-06-16
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 2019-04-28
    相关资源
    最近更新 更多