Conditionally format Python pandas cell

前端 未结 2 903
灰色年华
灰色年华 2020-11-28 15:16

I am trying to color, highlight, or change fond of Python pandas DataFrame based on the value of the cell. e.g. if the cells on each rows are bigger than the cell in the fir

相关标签:
2条回答
  • 2020-11-28 15:39

    From the style docs:

    You can apply conditional formatting, the visual styling of a DataFrame depending on the data within, by using the DataFrame.style property.

    import pandas as pd
    df = pd.DataFrame([[2,3,1], [3,2,2], [2,4,4]], columns=list("ABC"))
    
    df.style.apply(lambda x: ["background: red" if v > x.iloc[0] else "" for v in x], axis = 1)
    


    Edit: to format specific cells, you can add condition checkers to check the name of element with Series.iteritems() or check the index with enumerate(), e.g. if you want to format starting from column 3, you can use enumerate and check the index:

    df = pd.DataFrame([[2,3,-3], [3,2,7], [2,4,4]], columns=list("ABC"))
    
    df.style.apply(lambda x: ["background-color: #ff33aa" 
                              if (i >= 2 and (v > x.iloc[0] + x.iloc[1] 
                                              or v < x.iloc[0] - x.iloc[1])) 
                              else "" for i, v in enumerate(x)], axis = 1)
    

    0 讨论(0)
  • 2020-11-28 15:40
    import numpy as np
    import pandas as pd
    df = pd.DataFrame(np.random.rand(4,3))
    df.style.applymap(lambda x: 'background-color : yellow' if x>df.iloc[0,0] else '')
    

    0 讨论(0)
提交回复
热议问题