Python 如何根据列名和单元格值设置样式?
对于某些列,我需要用红色突出显示负值,对于其他列,我需要用绿色突出显示负值。(在“颜色词典”列中) 如何在Python 如何根据列名和单元格值设置样式?,python,pandas,Python,Pandas,对于某些列,我需要用红色突出显示负值,对于其他列,我需要用绿色突出显示负值。(在“颜色词典”列中) 如何在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]
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])
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)
样式。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)
我正在使用字典的数据框架来设计
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()])
我正在使用字典的数据框架来设计
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()])