如何在不改变Pandas DataFrame类型的前提下设置显示样式?
解决Pandas自定义显示样式且保留原数据类型的方法
问题根源在于你把df.style.apply()返回的Styler对象直接赋值给了原df变量,覆盖了原本的DataFrame,导致后续无法使用DataFrame的列访问等操作。以下是两种简单的解决方式:
方式1:直接在显示时调用样式方法
不需要覆盖原DataFrame,仅在需要展示样式化表格时调用style.apply(),原df始终保持DataFrame类型:
import pandas as pd df = pd.DataFrame([[19, 439],[19, 439]], columns=['COOL','NOTCOOL']) def colour_col(col): if col.name == 'COOL': return ['background-color: red' for c in col.values] # 仅在需要显示时生成样式,原df不受影响 df.style.apply(colour_col)
之后你依然可以正常执行df['COOL']来访问列数据。
方式2:将样式对象赋值给新变量
如果需要重复使用样式化的显示效果,把Styler对象存到新变量里,原DataFrame保留:
import pandas as pd df = pd.DataFrame([[19, 439],[19, 439]], columns=['COOL','NOTCOOL']) def colour_col(col): if col.name == 'COOL': return ['background-color: red' for c in col.values] # 样式化结果存入新变量 styled_table = df.style.apply(colour_col) # 显示样式化表格 styled_table # 原df仍可正常操作 df['COOL']
额外说明
Styler对象只是对原DataFrame的显示层包装,本身不存储原始数据。所以核心原则就是别让它覆盖你的原始DataFrame变量,这样就能兼顾样式显示和数据操作。
内容的提问来源于stack exchange,提问作者olivier dadoun
相关产品推荐
相关产品推荐

