在熊猫中组合多种样式

时间:2017-05-18 13:40:26

标签: python pandas

我想问一下是否可以在pandas中组合不同的样式格式。 例如,我想一次合并以下4种样式。

df.style.format({'vm_unity': '{:.2%}'}).bar(subset=['vm_unity'], align='mid', color=['#d65f5f', '#5fba7d'])
df.style.bar(subset=['vm_top'], align='mid', color=['#d65f5f', '#5fba7d'])
df.style.bar(subset=['vm_bot'], align='mid', color=['#d65f5f', '#5fba7d'])
df.style.bar(subset=['Sy'], align='mid', color=['#d65f5f', '#5fba7d'])

我目前的表现方式是将它们组合成一行,但我相信这不是最优雅的方式

df.style.format({'vm_unity': '{:.2%}'}).bar(subset=['vm_unity'], align='mid', color=['#d65f5f', '#5fba7d']).bar(subset=['vm_top'], align='mid', color=['#d65f5f', '#5fba7d']).bar(subset=['vm_bot'], align='mid', color=['#d65f5f', '#5fba7d']).bar(subset=['Sy'], align='mid', color=['#d65f5f', '#5fba7d'])

请您放弃一条线以获得更有效的方式吗?

提前谢谢!

2 个答案:

答案 0 :(得分:2)

你可以使用python的原生linebreak \并在之后打破这一行。你的代码是:

df.style.format({'vm_unity': '{:.2%}'})\
        .bar(subset=['vm_unity'], align='mid', color=['#d65f5f', '#5fba7d'])\
        .bar(subset=['vm_top'], align='mid', color=['#d65f5f', '#5fba7d'])\
        .bar(subset=['vm_bot'], align='mid', color=['#d65f5f', '#5fba7d'])\
        .bar(subset=['Sy'], align='mid', color=['#d65f5f', '#5fba7d'])

答案 1 :(得分:1)

第一种方法

因此,有多种方法可以对Styler / pandas数据框使用/应用多种样式。对我来说,最简单,最直接的方法是导出样式,其工作方式如下

>>> value = 1
>>> value.to_bytes(8, 'big')
b'\x00\x00\x00\x00\x00\x00\x00\x01'

在您的情况下就是

myStyle = myStyler.export()

这将返回一个样式对象,您以后可以使用

应用
style_1 = bar(subset=['vm_top'], align='mid', color=['#d65f5f', '#5fba7d']).export()

关于此功能的很酷的事情是,您可以通过传递样式列表来一次使用一种或几种不同的样式。因此,要回答您的问题,只需确保事先导出所有想要的样式,然后就可以一次应用所有样式。

第二种方法

通过使用from pandas.io.formats.style import Styler Styler.use([style_1]) 来实现,以防您只想应用两种替代样式。