【发布时间】:2021-11-09 20:09:13
【问题描述】:
我有一个名为 value_matrix_classification 的 pandas 数据框,如下所示:
{('wind_on_share',
'Wind-onshore power generation'): {('AIM/CGE 2.0',
'ADVANCE_2020_WB2C'): 'high', ('AIM/CGE 2.0',
'ADVANCE_2030_Price1.5C'): 'high', ('AIM/CGE 2.0',
'ADVANCE_2030_WB2C'): 'high', ('IMAGE 3.0.1',
'ADVANCE_2020_WB2C'): 'low', ('IMAGE 3.0.1',
'ADVANCE_2030_WB2C'): 'low', ('MESSAGE-GLOBIOM 1.0',
'ADVANCE_2020_WB2C'): 'low'},
('wind_off_share',
'Wind-offshore power generation'): {('AIM/CGE 2.0',
'ADVANCE_2020_WB2C'): nan, ('AIM/CGE 2.0',
'ADVANCE_2030_Price1.5C'): nan, ('AIM/CGE 2.0',
'ADVANCE_2030_WB2C'): nan, ('IMAGE 3.0.1',
'ADVANCE_2020_WB2C'): 'low', ('IMAGE 3.0.1',
'ADVANCE_2030_WB2C'): 'low', ('MESSAGE-GLOBIOM 1.0',
'ADVANCE_2020_WB2C'): 'low'}}
右侧的两列包含low, medium and high,它们是分类变量。我使用pd.cut(value_matrix_classification, bins = 3, labels = ["low", "medium", "high"]创建它们
我想突出显示 pandas 数据框,使高、中、低和 NaN 值分别有红色、橙色、黄色和背景色。
我写了以下函数
def highlight_cells(x):
if x == "high":
color = "red"
elif x=="medium":
color = "orange"
elif x=="low":
color = "yellow"
else:
color = "gray"
return [f"background-color: {color}"]
并将其应用于数据框
value_matrix_classification.style.apply(highlight_cells)
然而,这给出了 ValueError: the truth value of a Series is ambiguous。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。在这里突出显示的合适方法是什么?
我能够仅使用突出显示具有空值的单元格
value_matrix_classification.style.highlight_null(null_color = "gray")
如何根据给定的类别突出显示所有单元格:低、中和高?
【问题讨论】:
标签: python pandas dataframe background-color pandas-styles