[英]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.