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源代码,则会更容易为您提供帮助。