You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不改变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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 12:42:42