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

如何对已应用样式方法的pandas Styler对象执行转置操作

你遇到的报错是因为Styler对象和DataFrame属于不同类型,早期pandas版本没有为Styler实现转置方法,无法直接调用.T完成转置,可通过以下两种方案实现需求:

方案1:高版本pandas直接调用转置方法

pandas 1.4.0及以上版本为Styler新增了transpose()方法,.T是该方法的别名,版本符合要求的话直接在链式调用末尾添加即可:

import pandas as pd
import numpy as np

df2 = pd.DataFrame(np.random.randn(10,4), columns=["A", "B", "C", "D"])

def set_style(v):
    if v > 0:
        return "background-color: #ff887c;"
    elif v < 0:       
        return "background-color: #93d9ad;"
    
df2.style.format(precision=2)\
    .applymap(set_style, subset=["A", "C"])\
    .hide_columns()\
    .transpose()\
    .hide(axis="index") # 按需隐藏转置后的行索引

方案2:低版本pandas调整处理顺序

如果使用的pandas版本低于1.4.0,可以先转置原DataFrame,再调整样式的作用范围:

import pandas as pd
import numpy as np

df2 = pd.DataFrame(np.random.randn(10,4), columns=["A", "B", "C", "D"])

def set_style(v):
    if v > 0:
        return "background-color: #ff887c;"
    elif v < 0:       
        return "background-color: #93d9ad;"

# 先转置原数据
df_t = df2.T
# 原A、C列转置后变为行,用pd.IndexSlice指定对应行作为样式作用范围
df_t.style.format(precision=2)\
    .applymap(set_style, subset=pd.IndexSlice[["A", "C"], :])\
    .hide(axis="columns") # 隐藏转置后的列索引

两种方案最终都可以得到4行带样式的结果,同时可以按需隐藏不需要的索引。

内容的提问来源于stack exchange,提问作者Bram Vanroy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:54:02