Python Pandas 样式函数,用于突出显示特定条件下的特定列



我正在尝试编写一个函数,该函数比较两个数据框列,并在条件匹配时单独突出显示一列。

例如:我在数据框中有两列("C1","C2"(。我想迭代和比较两列中的每个值。如果 C1> C2,请在 C1 中突出显示该值。从下面,C1中的(6和7(将突出显示。

我从不同的地方得到了下面的代码,但如果我能得到更好的解决方案,这将很有帮助。

df = pd.DataFrame({'C1': [0,6,7], 'C2':[1,4,5]})
i = 0
def color_red(val):
global i
if not i > len(df['C1'])-1:
color = 'red' if df['C1'][i] > df['C2'][i] else 'black'
i+=1
else:
i = 0
color = 'red' if df['C1'][i] > df['C2'][i] else 'black'
i+=1
return 'color: %s' % color
s = df.style.applymap(color_red,subset=['C1'])
s

您可以将apply()方法与axis=1参数一起使用,以按行应用样式:

df = pd.DataFrame({'C1': [0,6,7], 'C2':[1,4,5]})
def color_red(s):
color = 'color: red' if s.iloc[0] > s.iloc[1] else 'color: black'
colors = [color] + [''] * (s.size - 1)
return colors
s = df.style.apply(color_red, axis=1)

最新更新