使用Styler(Pandas)着色 Dataframe 后格式化数字

2jcobegt  于 2022-12-16  发布在  其他
关注(0)|答案(2)|浏览(141)

我用Pandas创建了一个DataFrame,我想用一个颜色索引(低值红色,高值绿色)给单元格着色。我成功地做到了这一点,但是着色阻止了我格式化单元格。

import pandas as pd

df = pd.DataFrame({'a': [0.5,1.5, 5],
                   'b': [2, 3.5, 7] })

df = df.style.background_gradient(cmap='RdYlGn')
df

其返回

然而,当我尝试使用df.round(2)来格式化数字时,弹出了以下错误:
AttributeError: 'Styler' object has no attribute 'round'
有人能告诉我出了什么问题吗?

zujrkrfu

zujrkrfu1#

看一下pandas styling guidedf.style属性返回一个Styler示例,而不是 Dataframe 。从panda样式指南中的示例来看,似乎 Dataframe 操作(如舍入)是先完成的,样式是最后完成的。panda样式指南中有一个关于精度的部分。该部分提出了三个不同的选项来显示值的精度。

import pandas as pd

df = pd.DataFrame({'a': [0.5,1.5, 5],
                   'b': [2, 3.5, 7] })

# Option 1. Round before using style.
style = df.round(2).style.background_gradient(cmap='RdYlGn')
style

# Option 2. Use option_context to set precision.
with pd.option_context('display.precision', 2):
    style = df.style.background_gradient(cmap='RdYlGn')
style

# Option 3. Use .set_precision() method of styler.
style = df.style.background_gradient(cmap='RdYlGn').set_precision(2)
style
41ik7eoe

41ik7eoe2#

这对我很有效:

stylish_df = df.style.background_gradient(cmap='RdYlGn').format(precision=2)

相关问题