Python 在电子邮件正文中发送样式化的数据帧
我在下面有一个函数,它使我的数据框非常漂亮,带有边框和一些突出显示。但是,因为我使用了Python 在电子邮件正文中发送样式化的数据帧,python,css,pandas,dataframe,Python,Css,Pandas,Dataframe,我在下面有一个函数,它使我的数据框非常漂亮,带有边框和一些突出显示。但是,因为我使用了.style我不能使用.to_html()将数据帧放在电子邮件正文中,所以我使用.render()。但是,当我使用render()时,边框格式略有变化。下面是一张图片,它在Python中是什么样子的,这是我想要的,另一张图片是它在电子邮件中的样子。你知道如何在保留格式的同时,将样式化的数据框放入电子邮件正文中吗 import win32com.client import numpy as np import p
.style
我不能使用.to_html()
将数据帧放在电子邮件正文中,所以我使用.render()
。但是,当我使用render()
时,边框格式略有变化。下面是一张图片,它在Python中是什么样子的,这是我想要的,另一张图片是它在电子邮件中的样子。你知道如何在保留格式的同时,将样式化的数据框放入电子邮件正文中吗
import win32com.client
import numpy as np
import pandas as pd
import datetime as dt
import time
import os
curr_date = dt.datetime.now().strftime("%Y%m%d")
csv = pd.read_csv("Pipeline_Signals_" + curr_date + ".csv", delimiter = ',')
df = pd.DataFrame(csv)
df = df1.replace(np.nan, '', regex=True)
def _color_red_or_green(val):
color = 'red' if "*" in val else 'white'
return 'background-color: %s' % color
df = (df.style
.applymap(_color_red_or_green)
.set_table_styles([{'selector': 'th', 'props': [('border-color', 'black'),('background-color', 'white'), ('border-style','solid')]}])
.hide_index()
.set_properties(**{'color': 'black',
'border-style' :'solid',
'border-color': 'black'}))
df1 = df.render()
import win32com.client
inbox = win32com.client.gencache.EnsureDispatch("Outlook.Application").GetNamespace("MAPI")
inbox = win32com.client.Dispatch("Outlook.Application")
mail = inbox.CreateItem(0x0)
mail.To = "test@test.co.uk"
mail.CC = "test@test.co.uk"
mail.Subject = "Test Signals " + curr_date
mail.HTMLBody = df1
mail.Display()
这就是Python中数据框架的外观,也是我希望它的外观
这就是我将数据框放入电子邮件正文时的样子。由于某种原因,边界发生了变化
它似乎来自于显示表格时默认使用的CSS表。在设置样式时,应该尝试将表的CSS“border collapse”属性设置为“collapse”。如果不起作用,请尝试将“边框间距”属性设置为0。如果您可以粘贴表格的html源代码,则会更容易为您提供帮助。