【问题标题】:Python pandas dataframe and excel: Add cell background colorPython pandas 数据框和 excel:添加单元格背景颜色
【发布时间】:2017-11-06 00:49:15
【问题描述】:

目前我像这样保存我的数据框

writer = ExcelWriter('test.xlsx')
test_df.to_excel(writer,'Sheet1')
writer.save()

生成的 excel 文件如下所示

cus  1  abc 2 jbd 3 lkl ...
1   col  v  v  v  v  v ...
2    v   v col v  v  v ... 
3    v   v  v  v col v ...

我需要的是,当 cus 值 == 标题值时,该单元格应该有绿色背景。在上面的示例中,所有值为“col”的单元格都应设置为绿色背景。我该怎么做?

【问题讨论】:

    标签: python excel pandas dataframe


    【解决方案1】:

    a new feature in Pandas 0.20.0 - Excel output for styled DataFrames

    styled = (df.style
                .applymap(lambda v: 'background-color: %s' % 'green' if v=='col' else ''))
    styled.to_excel('d:/temp/styled.xlsx', engine='openpyxl')
    

    结果:

    【讨论】:

    • 这在笔记本上效果很好。如果我在 spyder 中运行相同的代码。它抱怨“Styler”对象没有“to_excel”属性。有什么想法吗?
    • @JasonLi,请检查您使用spyder时是否有相同的环境(版本、设置)...
    • 是否可以将多种样式应用于单个数据框?如何用不同的颜色为标题着色。我想了解更多关于造型的信息。在互联网上找不到太多。请帮忙。
    • @MahaveerJangir,请查看官方文档:pandas.pydata.org/pandas-docs/stable/user_guide/style.html
    【解决方案2】:

    您可以使用 StyleFrame 库来实现这一点。

    安装

    pip install styleframe
    

    这个库的文档可以在here找到。

    试试下面的代码,看看它是否能达到你的目的。

    import pandas as pd
    from StyleFrame import StyleFrame, Styler
    
    df = pd.DataFrame(" Your Dataframe ")
    
    sf = StyleFrame(df)
    style = Styler(bg_color='green') 
    for col_name in df.columns:
        sf.apply_style_by_indexes(sf.loc[sf['col_name']== col_name ], cols_to_style=col_name,
                              styler_obj=style)
    sf.to_excel('test.xlsx').save()
    

    干杯!

    【讨论】:

    • 如果你有多张纸会发生什么
    猜你喜欢
    • 2021-10-19
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 2018-06-30
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多