Python 突出显示多索引数据帧上的最大/最小值-熊猫
假设具有两层多索引数据帧:Python 突出显示多索引数据帧上的最大/最小值-熊猫,python,pandas,dataframe,multi-index,Python,Pandas,Dataframe,Multi Index,假设具有两层多索引数据帧: df=pd.DataFrame(['one',A',100,3],'two',A',101,4], [3',A',102,6],“1',B',103,6], [2',B',104,0],“3',B',105,3], 列=['c1',c2',c3',c4'])。设置索引(['c1',c2'])。排序索引() 打印(df) 哪个看起来像这个 c3 c4 c1 c2 one A 100 3 B 1
df=pd.DataFrame(['one',A',100,3],'two',A',101,4],
[3',A',102,6],“1',B',103,6],
[2',B',104,0],“3',B',105,3],
列=['c1',c2',c3',c4'])。设置索引(['c1',c2'])。排序索引()
打印(df)
哪个看起来像这个
c3 c4
c1 c2
one A 100 3
B 103 6
three A 102 6
B 105 3
two A 101 4
B 104 0
我的目标是突出显示所有列'c3'
和'c4'
中'c1'
中每个元素的'c2'
元素之间的最小值(或相当于最大值)
c3 c4
c1 c2
one A **100** **3**
B 103 6
three A **102** 6
B 105 **3**
two A **101** 4
B 104 **0**
你有什么建议吗
我已经尝试过这个方法,但它可以按列运行,并且不基于索引
def高亮显示最小值(数据):
attr='背景色:{}'。格式(颜色)
如果data.ndim==1:#系列从.apply(轴=0)或轴=1
is_max=data==data.min()
返回[attr if v else''对于v in is_max]
其他:#from.apply(轴=无)
is_max=data==data.min().min()
返回pd.DataFrame(np.where(是最大值,属性“”),
index=data.index,columns=data.columns)
df=df.style.apply(高亮显示最小值,轴=0)
结果如下所示:
c3 c4
c1 c2
one A **100** 3
B 103 6
three A 102 6
B 105 3
two A 101 4
B 104 **0**
与min
一起使用,并按所有值进行比较:
def highlight_min(data):
color= 'red'
attr = 'background-color: {}'.format(color)
if data.ndim == 1: # Series from .apply(axis=0) or axis=1
is_min = data == data.min()
return [attr if v else '' for v in is_min]
else:
is_min = data.groupby(level=0).transform('min') == data
return pd.DataFrame(np.where(is_min, attr, ''),
index=data.index, columns=data.columns)
@MROB-对我来说,工作很好,你是否使用
df.style.apply(高亮显示,axis=None)
?