我需要用红色突出显示某些负值,某些列使用绿色。 (在column_colors词典中)
如何在applymap
函数中获取列名?
return df.style.applymap(
lambda val: column_colors[???]['negative_cell'] if val < 0 else column_colors[???]['positive_cell'],
subset=pd.IndexSlice[:, column_colors_keys])
这是字典:
"column_colors": {
"a": {
"positive_cell": "color:red;",
"negative_cell": "color:green;"
},
"b":{
"positive_cell": "color:green;",
"negative_cell": "color:red;"
}
},
答案 0 :(得分:2)
style.applymap
是逐元素应用的,因此没有一种简单的方法来检索“当前”列名。
如果您使用style.apply
(默认情况下按列应用),则使用.name
属性获取“当前”列名称很简单:
column_colors = {
"a": {
"positive_cell": "color:red;",
"negative_cell": "color:green;"
},
"b": {
"positive_cell": "color:green;",
"negative_cell": "color:red;"
}
}
def apply_style(column):
col_data = column_colors[column.name]
return [col_data['positive_cell'] if val > 0 else col_data['negative_cell']
for val in column]
df.style.apply(apply_style)
答案 1 :(得分:1)
我正在使用字典的数据框来为np.where
设置样式
m = pd.DataFrame(column_colors) #creates a dataframe from column_colors dict
def myf(x):
val = np.where(x>0 ,m.loc['positive_cell'], m.loc['negative_cell'])
return pd.DataFrame(val,columns=x.columns,index=df.index)
df.style.apply(myf,axis=None,subset=[*column_colors.keys()])