Pandas to_html:如何为指定行(含索引)添加边框?
实现Total整行(含索引列)的上下边框
要给Total行的索引列也添加上下边框,需要同时处理数据单元格(<td>)和索引单元格(<th>)——因为applymap仅作用于数据单元格,索引列属于<th>标签,得通过set_table_styles来设置样式。
方法一:精准匹配Total行(推荐)
直接用CSS选择器定位Total行的所有单元格(包括索引),一次性设置样式:
import pandas as pd data = pd.DataFrame(index=["Name1", "Name2", "Total"]) data["A"] = [1,2,3] data["B"] = [2,1,3] # 选中Total行的索引单元格和数据单元格,统一设置上下边框 style = data.style.set_table_styles([ { 'selector': 'tr:has(th:contains("Total")) th, tr:has(th:contains("Total")) td', 'props': [('border-top', 'solid'), ('border-bottom', 'solid')] } ]) style
方法二:分治处理数据列和索引列
如果需要单独调整数据列与索引列的样式细节,可以分开处理:
import pandas as pd data = pd.DataFrame(index=["Name1", "Name2", "Total"]) data["A"] = [1,2,3] data["B"] = [2,1,3] # 先处理数据列的Total行 style = data.style.applymap( lambda x: "border-top: solid; border-bottom: solid", subset=("Total", slice(None)) ) # 再给索引列的Total单元格添加上下边框 style.set_table_styles([ { 'selector': 'tr:has(th:contains("Total")) th', 'props': [('border-top', 'solid'), ('border-bottom', 'solid')] } ]) style
补充说明
tr:has(th:contains("Total")):匹配包含文本为"Total"的索引单元格的行- 如果Total是固定的最后一行,也可以用
tr:last-child th, tr:last-child td简化选择器
内容的提问来源于stack exchange,提问作者Ugus
相关产品推荐
相关产品推荐

