繁体   English   中英

将pandas applymap()与多个映射功能一起使用

[英]Using pandas applymap() with multiple mapping functions

我正在使用df.to_excel()将数据从熊猫数据df.to_excel()输出到excel。 为了提高可读性,我使用df.style.applymap()根据内容更改单元格的颜色。

想象一下,我有一个数据框,看起来像:

df = 
       Account  Revenue   AccountAge
0     "Boeing"     5000          5.6
1   "Lockheed"   -10000          1.2
2     "Airbus"    12000          0.6
3   "Northrop"    -3000          8.4

帐户年龄代表我在帐户上拥有此帐户的时间。 也许我想将负收入单元标记为红色。 我可以:

def color_neg_revenue(val):
    if val < 0:
        color = 'red'
    return "background-color: %s" % color

df = df.style.applymap(color_neg_revenue, subset=["Revenue"])

我可以将其导出到excel,格式看起来很棒! 但是,假设我尝试以下操作时,也想用黄色标记新帐户:

def color_new_account(val):
    if val < 3:
        color = 'yellow'
    return "background-color: %s" % color

df = df.style.applymap(color_new_account, subset=["AccountAge"])

我得到:

AttributeError: 'Styler' object has no attribute 'style'

为什么我不能用applymap()对我已经使用的数据框applymap()吗? 我该如何解决?

问题不在于功能。 在您的第一个电话中,您执行:

df = df.style.applymap(color_neg_revenue, subset=["Revenue"])

因此,现在df不再是DataFrame ,而是Styler 这样的Styler当然不再具有.style属性。 因此,最好将其分配给另一个变量,并在该变量上进行链接。 喜欢:

s = df.style.applymap(color_neg_revenue, subset=["Revenue"])

# Look mom, no I have no .style
s = s.applymap(color_new_account, subset=["AccountAge"])

因此,当您使用Styler ,可以链接此类applymap调用,但此类styler本身没有.style属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM