使用具有多个映射函数的 pandas applymap()
Using pandas applymap() with multiple mapping functions
我正在使用 df.to_excel()
将数据从 pandas 数据帧输出到 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()
?我该如何解决这个问题?
问题不在于函数。在您的第一次通话中,您执行:
<s><b>df =</b> df.style.applymap(color_neg_revenue, subset=["Revenue"])</s>
所以现在 df
不再是 DataFrame
,而是 Styler
。这样的Styler
当然没有.style
属性了。因此,您最好将其分配给另一个变量,然后链接到那个变量。喜欢:
<b>s =</b> df.style.applymap(color_neg_revenue, subset=["Revenue"])
# Look mom, no I have no .style
<b>s</b> = s.applymap(color_new_account, subset=["AccountAge"])
因此,当您使用 Styler
时,您可以 chain 这样的 applymap
调用,但是这样的样式器本身没有 .style
属性。
我正在使用 df.to_excel()
将数据从 pandas 数据帧输出到 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()
?我该如何解决这个问题?
问题不在于函数。在您的第一次通话中,您执行:
<s><b>df =</b> df.style.applymap(color_neg_revenue, subset=["Revenue"])</s>
所以现在 df
不再是 DataFrame
,而是 Styler
。这样的Styler
当然没有.style
属性了。因此,您最好将其分配给另一个变量,然后链接到那个变量。喜欢:
<b>s =</b> df.style.applymap(color_neg_revenue, subset=["Revenue"])
# Look mom, no I have no .style
<b>s</b> = s.applymap(color_new_account, subset=["AccountAge"])
因此,当您使用 Styler
时,您可以 chain 这样的 applymap
调用,但是这样的样式器本身没有 .style
属性。