【问题标题】:call multiple argument function in applymap in python在python的applymap中调用多参数函数
【发布时间】:2026-01-08 03:50:01
【问题描述】:

我编写了一个函数,为 pandas 数据框的变量赋予颜色。 在那里我使用了两个参数,第一个是变量列表,另一个是阈值列表(我在列表中只有两个值,例如 30 和 50),用于为变量和函数着色,如下所示:

def color_code(val,values):
    if val <= values[0]:
       color = 'green'
    elif values[0]<val<=values[1]:
       color = 'yellow'
    elif val >values[1]:
       color = 'red'
    return 'background-color: %s' % color

现在我想调用这个函数。为此我尝试了以下方法。

df1=df.style.applymap(color_code,subset=['col1','col2'],values=[30,50])

但上面的电话对我不起作用。

谁能帮我解决这个问题。

提前致谢。

【问题讨论】:

    标签: python pandas python-applymap


    【解决方案1】:

    你可以试试这个:

    def color_code(values):
        def color_code_by_val(val):
            if val <= values[0]:
                color = 'green'
            elif values[0]<val<=values[1]:
                color = 'yellow'
            elif val >values[1]:
                color = 'red'
            return 'background-color: %s' % color
        return color_code_by_val
    

    那么你的电话应该是:
    df1=df.style.applymap(color_code([30,50]), subset=['col1','col2'])

    【讨论】:

    • 如果我想使用两个以上的参数,那么我将在函数右侧使用另外一个函数。
    • 无需在其中创建另一个函数。您只需要 color_code 函数来接收所有不依赖于数据帧值的参数。并且返回的函数应该只有 1 个参数。