猿问

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


呼唤远方
浏览 93回答 1
1回答

翻过高山走不出你

您可以使用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 colorss = df.style.apply(color_red, axis=1)
随时随地看视频慕课网APP

相关分类

Python
我要回答