【问题标题】:How to colorize the cell in column? Pandas, pygsheets如何为列中的单元格着色?熊猫,pygsheets
【发布时间】:2021-12-14 06:04:29
【问题描述】:

我得到包含 3 列的数据框:sku/price_1/price_2 如果 price_2 中的单元格小于 price_1,如何为它着色?我已经尝试过的:

    def highlight_late(s):
        color = ['background-color: red' if s['price_2'] < s['price_1'] else 
        'background-color: white' for s_ in s ]
        return color
df = myDataframe.style.apply(highlight_late,axis=1)

我也尝试使用子集='price_2',但它不起作用,返回 keyerror 'price_1',但如果我不使用子集,它可以工作,但会为所有行着色。以及如何使用 pygsheets 在 google sheet 中着色? TABLE

【问题讨论】:

    标签: python pandas cell background-color pygsheets


    【解决方案1】:

    我认为最简单的方法是按条件创建样式DataFrame,使用Styler.applyaxis=None 在函数中设置您需要的列:

    print(df)
           SKU  price_1  price_2
    0  SKU_123     5110   5110.0
    1  SKU_124     4730      NaN
    2  SKU_125     4490      NaN
    3  SKU_126     4730      NaN
    4  SKU_127     5530   5500.0
    5  SKU_128  1245300      NaN
    
    def highlight_late(x):
        c1 = 'background-color: red'
        # condition
        m = x['price_2'] < x['price_1']
        # empty DataFrame of styles
        df1 = pd.DataFrame('', index=x.index, columns=x.columns)
    
        # in case you need to set the background white
        # df1 = pd.DataFrame('background-color: white', index=x.index, columns=x.columns)
    
        # set column price_2 by condition
        df1.loc[m, 'price_2'] = c1
        # set column SKU by condition
        # df1.loc[m, 'SKU'] = c1
        return df1
    
    df.style.apply(highlight_late, axis=None).to_excel('file.xlsx', index=False)
    

    【讨论】:

    • 嗨,pycharm 告诉我预期类型 '(...) -> Styler',得到 '(x: {getitem, index, columns}) -> DataFrame'而在 df.style.apply(highlight_late, axis=None) 中,有什么问题?
    • @YaroslavButorin - 添加了对 excel 的导出,对我来说工作完美。
    • myDF.style.apply(highlight_late, axis=None).to_excel('test.xlsx') - 终于!它的作品,非常感谢。但是为什么它不起作用然后我用两个字符串来做呢?比如:myDF.style.apply(highlight_late, axis=None) myDF.to_excel('test.xlsx')
    • @YaroslavButorin - 然后需要styles = myDF.style.apply(highlight_late, axis=None)styles.to_excel('test.xlsx')
    猜你喜欢
    • 2017-01-10
    • 2021-10-06
    • 2020-02-21
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    相关资源
    最近更新 更多