首页 > 编程问答 >Pandas:样式列标题

Pandas:样式列标题

时间:2024-07-31 08:22:21浏览次数:12  
标签:python pandas pandas-styles

我正在使用 pandas styler 根据列标题的名称为某些列提供背景颜色。 虽然这按预期工作,但列标题的背景颜色不会改变。

这是我的脚本中应用样式的部分:

def highlight_col(x):
    if x.name in added_columns:
        return ['background-color: #67c5a4']*x.shape[0]
    elif x.name in dropped_columns:
        return ['background-color: #ff9090']*x.shape[0]
    else:
        return ['background-color: None']*x.shape[0]

old = old.style.apply(highlight_col, axis=0)

有没有办法应用 style.apply () 函数 不仅适用于列标题下方的单元格,还适用于包括列标题的整个列?

编辑: 为了澄清起见,这里是 Excel 输出的屏幕截图: Excel 输出的屏幕截图

“标题 2”应与其下方的单元格具有相同的背景颜色。


遗憾的是,Pandas Styler 不能直接用于为列标题本身设置样式。 Styler.apply() 函数主要用于为 DataFrame 的 数据单元格 设置样式,而对标题行没有直接影响。

不过,你可以通过其他的方法来实现类似的效果:

1. 使用 CSS 来为标题添加样式:

  • 你可以利用 HTML 和 CSS 的功能,在将样式化的 DataFrame 转换为 HTML 时,为标题添加背景颜色。

以下是一个例子:

```python import pandas as pd

# 示例数据 data = {'Header 1': [1, 2, 3], 'Header 2': [4, 5, 6]} df = pd.DataFrame(data)

# 列名列表 added_columns = ['Header 2'] dropped_columns = []

def highlight_col(x): if x.name in added_columns: return ['background-color: #67c5a4'] x.shape[0] elif x.name in dropped_columns: return ['background-color: #ff9090'] x.shape[0] else: return ['background-color: None']*x.shape[0]

# 使用 Styler 为数据单元格应用样式 styled_df = df.style.apply(highlight_col, axis=0)

# 使用 CSS 为标题添加样式 styled_df.to_html('styled_table.html', escape=False)

with open('styled_table.html', 'r+') as f: content = f.read() f.seek(0) f.write(f' <style> th.col_heading {{ background-color: #67c5a4; }} </style> \n{content}') ```

这段代码首先将样式化的 DataFrame 转换为 HTML 文件。然后,它打开该文件,并将一段 CSS 代码插入到文件的开头。这段 CSS 代码会将所有类名为 col_heading <th> 元素(即表格标题)的背景颜色设置为 #67c5a4

2. 使用其他库来生成表格:

  • 如果你需要更复杂的表格样式,可以考虑使用其他 Python 库,例如 XlsxWriter openpyxl 。这些库允许你对 Excel 文件的格式进行更精细的控制,包括标题样式。

希望这些方法能够帮助你实现你想要的效果!

标签:python,pandas,pandas-styles
From: 55243717

相关文章

  • 有没有办法根据 Pandas GroupBy 的计数在 2 个数据帧之间重复分配值?
    我有两个结构相同但形状和值不同的Pandas数据框:importpandasaspddataframe_1=pd.DataFrame({'customer_id':['id1','id2','id3','id4','id5','id6'],'gender':[......
  • 如何在 pandas 中设置列​​标题的样式?
    假设我有一个带有列标题“A”和“B”的2x2DataFrame:importpandasaspddata_style=[['background-color:#fdfd96',''],['','background-color:#fdfd96']]df=pd.DataFrame([[1,2],[3,4]],columns=["A",&qu......
  • 如何在for循环中使用curve_fit函数在python中一次性创建多个回归?
    简而言之,我有两个矩阵,一个称为t,另一个称为y。每个都有7列。假设它们被称为a、b、c、d、e、f和g。我想要的是从a对a、b对b、...、g对g这两个矩阵进行回归。我已经设法使我的算法使用curve_fit对一列进行回归一次。但我真正希望的是它能够一次性完成7个回归......
  • 激活虚拟环境会让python消失?
    VisualStudioCode终端的屏幕截图如屏幕截图所示,python在Powershell中运行得很好。然后我在E:\DrewFTCAPI\ftcapivenv激活虚拟环境,然后python就消失了。不仅没有消失,它不运行任何东西,也不产生任何输出。我至少预计会出现某种类型的"python"i......
  • Python 3.6 中的相互递归类型,使用命名元组语法
    我正在尝试实现图的节点和边。这是我的代码:fromtypingimportNamedTuple,ListclassNode(NamedTuple):name:stredges:List[Edge]classEdge(NamedTuple):src:Nodedest:Node这会引发错误,因为创建Edge时未定义Node类型。......
  • 使用 keras 模型对函数进行 Python 类型提示
    如果我创建这样的函数:defmdl(input_shape):model=Sequential()model.add(Conv2D(depth=64,kernel_size=(3,3),input_shape=input_shape,activation='relu'))model.add(Dense(32),activation='relu')model.add(Dropout(0.3))m......
  • Python:自动完成可以用于列表中的元素吗?
    Python在函数参数和函数返回类型中具有类型提示。类的元素是否有类似的东西?我希望能够在如下示例中使用自动完成功能:classMyClass:defhello(self):print("Hello")mylist=[]mylist.append(MyClass())foriinmylist:i.hello()#Noautocomplete......
  • python 中 COM 对象的正确类型提示是什么?
    我在python中使用COM对象来向3rd方软件公开可编程接口。这是通过使用Dispatchfromwin32com.client来实现的。我的项目也一直在使用python.3.7中的类型提示,但是我不确定如何为了类型提示的目的定义这些COM对象的类型。这个问题涉及我拥有的所有COM......
  • 如何遍历Python字典同时避免KeyErrors?
    解析大型JSON时,某些键可能仅在某些情况下存在,例如出现错误时。从服务器的API获取200OK的情况并不少见,但是您得到的响应包含应检查的错误。处理此问题的最佳方法是什么?我知道使用类似||之类的东西。|是处理KeyError的一种方法。get()但是如果......
  • Python 中的递归数据类型
    Python中最接近Haskell中的递归数据类型的是什么?(即在定义自身时使用类型自己的定义。)编辑:为了给出递归类型的更具体定义,下面是Haskell中的二叉树:dataTreea=Leafa|Branch(Treea)(Treea)我的阅读方式如下:二叉树可以是叶子,也可以包含两......