如何使用 Pandas Styler 删除指定单元格的内部边框?

问题描述 投票:0回答:1

我想为特定的单元格添加边框,当相邻时,在没有内部边框的情况下为相邻的组添加边框。

到目前为止,这是我的代码......

import pandas as pd

df = pd.DataFrame({"TransNo":[29, 32, 34, 45, 68, 71, 72, 73, 81],
                    "Type":["Fee", "Sale", "Fee", "Fee", "Sale", "Sale", "Sale", "Sale", "Fee"],
                  "Amount": [1.2, 10.2, 2.1, 3.1, 15.3, 19.2, 100.5, 97.3, 2.2]})

def border(cell_value):
    if cell_value == "Sale":
        return "border: solid thin"
    
df.style.applymap(border)

这是输出...

Output

这里是所需输出的标记....

Desired

红色标记表示删除内部边框。任何建议,将不胜感激。谢谢。

泰勒

css pandas styles border pandas-styles
1个回答
0
投票

一个非常基本/天真的方法是不从一开始就画出那些内部边界。

#feel free to adjust the size/style of the borders

def outer_border(ser):
    m1 = ser.eq("Sale")
    m2 = ser.shift(-1).eq("Sale")
    m3 = ser.shift(+1).eq("Sale")
    conds = [m1 & ~m2 & ~m3, #isolated,
             m2 & m3, #surrounded,
             m1 & m2 & ~m3, #headed
             m1 & ~m2 & m3 #tailed
    ]
    
    vals = ["border: 4px solid black",
            "border-left: 4px solid black;border-right: 4px solid black",
            """border-top: 4px solid black;border-left: 4px solid black;
               border-right: 4px solid black""",
            """border-bottom: 4px solid black;border-left: 4px solid black;
               border-right: 4px solid black"""
    ]
    return np.select(conds, vals, default="")

df.style.apply(outer_border, subset="Type")

输出:

© www.soinside.com 2019 - 2024. All rights reserved.