【问题标题】:Conditional formatting pandas条件格式熊猫
【发布时间】:2017-12-08 11:57:27
【问题描述】:

如何在 C 列中将低于 1 的单元格着色为绿色,将 0 到 0.5 之间的单元格着色为黄色。

当前输出:

   A    B    C
0 TT    WW   -5
1 AA    WW   0
2 DD    WW   5

期望:

以下代码对我来说只是写入 Excel,没有颜色变化。

import pandas as pd
import numpy as np


df = pd.read_excel("C:\\13\\13\\13.xlsx")
def highlight_vals(val, min=-1111, max=1, color='green'):
    if min < val < max:
        return 'background-color: %s' % color
    else:
        return ''
df.style.applymap(highlight_vals, subset=['C'])

def highlight_vals(val, min=0, max=0.5, color='yellow'):
    if min < val < max:
        return 'background-color: %s' % color
    else:
        return ''
df.style.applymap(highlight_vals, subset=['C'])


writer = pd.ExcelWriter("C:\\13\\13\\zz.xlsx")
df.to_excel(writer, startrow=0, startcol=0, index = False)

writer.save()

【问题讨论】:

    标签: python pandas dataframe conditional-formatting


    【解决方案1】:

    这应该可行:

    import pandas as pd
    import numpy as np
    
    
    df = pd.read_excel("C:\\13\\13\\13.xlsx")
    def highlight_vals(val, min=-1111, max=1, color='green'):
        if min <= val <= max:
            return 'background-color: %s' % color
        else:
            return ''
    style_1 = df.style.applymap(highlight_vals, subset=['C'])
    
    def highlight_vals(val, min=0, max=0.5, color='yellow'):
        if min <= val <= max:
            return 'background-color: %s' % color
        else:
            return ''
    style_2 = df.style.applymap(highlight_vals, subset=['C'])
    
    style_1.use(style_2.export())
    
    writer = pd.ExcelWriter("C:\\13\\13\\zz.xlsx")
    style_1.to_excel(writer, startrow=0, startcol=0, index = False)
    
    writer.save()
    

    我保留了两个 Styler 对象,将一个对象应用到另一个对象上,并将生成的对象保存到 Excel 而不是数据框。另请注意,我修复了您的条件。否则你不会因为min &lt; val而变成黄色

    【讨论】:

    • 我的 Excel 不会因为这个而改变
    • Positive。我使用的是 Windows 10。完全复制了该代码。也许是错误的做法。输出出现但没有颜色变化
    • 如何运行代码?如果您从 Jupyter 运行,则可以在每次应用 display(style_1) 等新样式后检查结果。每次你应该看到彩色表格
    • 我正在使用 pycharm。如果我有 Jupyter,也许会有颜色变化。可以将其写入 excel 还是在 pandas 中,您只能为数据框着色,但在 excel 中不会注意到变化。需要 xlsxwriter 吗?
    • PyCharm 对我来说一切正常。我不知道xlsxwriter,但我必须安装openpyxl
    猜你喜欢
    • 2017-05-03
    • 2022-12-11
    • 2020-02-09
    • 1970-01-01
    • 2018-06-05
    • 2021-07-09
    • 2019-04-11
    • 1970-01-01
    • 2019-08-08
    相关资源
    最近更新 更多