【问题标题】:Flexible chaining in Python pandasPython pandas 中的灵活链接
【发布时间】:2020-09-01 10:47:22
【问题描述】:

设置

我按顺序将两种方法应用于 pandas 样式器对象,例如

df.style \
  .applymap(mapping1, subset=["column_a"]) \
  .applymap(mapping2, subset=["column_b"])

不过,我应用的映射有所不同。例如,我可能意识到我想为列column_c 添加一个名为mapping3 的新映射。为了可扩展性,我希望能够快速添加映射并应用它,而不必在上面的 sn-p 中添加一行。

我的问题

我想灵活地提供映射并将它们全部应用于df,其中输入是映射列表(如mappings = [(mapping1, col1), (mapping2, col2), (mapping3, col3)],输出是样式数据框。

尽管这个问题使用了样式化数据框的示例,但我认为这个问题并不限于链接样式器对象本身。我认为它适用于 pandas 中所有类型的链接方法。

可重现的例子

import pandas as pd

df = pd.DataFrame({
    "column_a": [-1, -2, 3, 4],
    "column_b": ["good", "bad", "neutral", "amazing"],
    "column_c": [0.1, 0.9, 0.5, 1]
})


def mapping1(val):
    if val < 0:
        color = "red"
    elif val > 0:
        color = "green"
    else:
        color = "black"
    return "background-color: %s" % color


def mapping2(val):
    if val == "amazing":
        color = "purple"
    else:
        color = "black"
    return "color: %s" % color


def mapping3(val):
    if val < 0.8:
        color = "orange"
    if val >= 0.8:
        color = "green"
    return "color: %s" % color


styler = df.style \
    .applymap(mapping1, subset=['column_a']) \
    .applymap(mapping2, subset=["column_b"]) \
    .applymap(mapping3, subset=["column_c"])

styler

【问题讨论】:

    标签: python pandas chaining


    【解决方案1】:

    这是一种使用style.apply 并反转字典的方法

    mappings = [(mapping1, 'column_a'), (mapping2, 'column_b'), (mapping3, 'column_c')]
    
    df.style.apply({v:k for k,v in mappings})
    

    【讨论】:

      【解决方案2】:

      我们可以在循环中执行applymap

      mappings = [
          (mapping1, 'column_a'),
          (mapping2, 'column_b'),
          (mapping3, 'column_c')]
      
      x = df.style
      for m in mappings:
          x = x.applymap(m[0], m[1])
      
      x
      

      【讨论】:

        猜你喜欢
        • 2021-02-01
        • 1970-01-01
        • 2022-01-18
        • 1970-01-01
        • 2021-12-27
        • 2018-02-22
        • 1970-01-01
        • 2021-12-09
        • 2012-05-16
        相关资源
        最近更新 更多