将Pandas.set_table_styles()与tr:nth子Selector和Properties一起使用,并渲



我是熊猫造型的新手,所以我觉得这一切都很困难,但我正在尝试使用pandas数据框架。然后,我想将表格样式应用于特定颜色的tr:nth子(奇数(行。

我看到set_table_styles((的代码使用CSS Selectors和Poperties的字典来定义这些样式。

我假设我想要的桌子选择器是"选择器":"r:第n个孩子(老(",道具是"道具":["背景":"蓝色"]

这怎么会产生没有条带化的结果,也无法弄清楚这一点。我已经成功地使用了一些其他风格的选项,但不是特别的这一个。

最后,我需要渲染的HTML,因为我将它插入到Microsoft Outlook生成的电子邮件中。

如果您能帮助我们实现这一目标,我们将不胜感激。下面是生成我的电子邮件的文本片段,但现在表行剥离

myMessage = """<HTML>
segmentStuffHere
<HTML>"""
segmentParts = ""
for seg, dF in segmentDataFrames.items():
html = (
dF.style
.set_table_styles([{'selector': 'tr:nth-child(odd)', 'props': [('background', '#FFF')]}])
.render()
)
myMessagePart = """
<BODY>
<font color="black">
The break-out by "{segment}" is as follows:<br><br>
{htmlTable}
<br>
</font>
</BODY>

""".format(htmlTable=html, segment=seg)
segmentParts += myMessagePart
myMessage = myMessage.replace('segmentStuffHere', segmentParts)
print(myMessage)
# print(myMessage)
outlook = Dispatch("Outlook.Application")
#Contruct a message Body found above ^
# Found the below syntax is needed to build outlook object to send message. 
msg = outlook.CreateItem(0)
msg.To = '{}@email.com'.format('user')
# msg.CC = emailCC
msg.Subject = 'Segment Test'
msg.GetInspector
index = msg.HTMLbody.find('>', msg.HTMLbody.find('<body'))
msg.HTMLbody = msg.HTMLbody[:index + 1] + myMessage + msg.HTMLbody[index + 1:]
# msg.HTMLBody = myMessage
msg.Display(False)
# msg.BodyFormat = '3'
msg.Send()
print('Email Sent!')```

在我的代码中前进并解决新问题时。我偶然发现了一个非常有效的解决方案。我能够编写一个函数,并使用.apply((函数逐行执行。


def style_email_tables(s):
return ['text-align: center; border-style: solid; border-collapse: collapse; border-width: 1.5px; border-color: #CCD4DC' if s.name % 2 else 'background-color: #EFF2F8; text-align: center; border-style: solid; border-collapse: collapse; border-width: 1.5px; border-color: #CCD4DC' for v in s]
def styleDataFrame(dataFrame, columnSubset=None):
if columnSubset:
tableHTML = (
dataFrame.style.apply(style_email_tables, axis=1)
.set_properties(subset=columnSubset, **{'width':'10em', 'text-align':'center'})
.set_table_styles([{'selector':'th', 'props': [('border-style','solid'),('border-collapse', 'collapse'),('border-width','1.5px'), ('border-color', '#CCD4DC'), ('text-align', 'center'), ('background', '#102038')]}])
.hide_index()
.render()
)

最新更新