我想为特定的单元格添加边框,当相邻时,在没有内部边框的情况下为相邻的组添加边框。
到目前为止,这是我的代码......
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)
这是输出...
这里是所需输出的标记....
红色标记表示删除内部边框。任何建议,将不胜感激。谢谢。
泰勒
一个非常基本/天真的方法是不从一开始就画出那些内部边界。
#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")
输出: