python - multiIndex 上的熊猫造型器
问题描述
我想在 multiIndex 的某个索引上设置 panda DataFrame 的样式。通常, pd.IndexSlice 应该根据这个答案工作。
但是,如下所示,这似乎不起作用:
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
方法给我一个错误:
不可散列的类型:'slice'
解决方案
到目前为止,这似乎不起作用,如此处所述:
请注意,此索引器以前在 pandas 0.22 版中工作,但在 0.24.2 中引入了回归
有趣的是,我在 0.24.2 上遇到了类似的问题,但在 0.23.4 上没有。
推荐阅读
- r - 如何通过分组r在多列中找到最大值并返回值和最大值的数据
- django - 是否可以在不使用 DRF 的情况下将 vue.js 与 wagtail 流字段一起使用?
- python - Seaborn countplot 在泰坦尼克号数据集上显示错误的结果
- express - 使用 Mongoose 预保存挂钩会导致:错误 [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
- oracle - oracle 中的通用触发器
- ios - iOS:获取动态数量的子视图以在水平和垂直方向上占用superview中的最大空间
- c# - 在点网核心中初始化后台服务的正确方法
- python - 如何在windows中并行执行多个python代码
- regex - 正则表达式在 openrefine 中搜索和替换表情符号
- loops - 在 for-each 循环中进行类型转换