12

我已经使用 格式化了 pandas 数据框.style,并希望将格式化后的表格作为电子邮件发送出去。但是,样式器对象与该功能不兼容,to_html然后我尝试使用该.render()功能。

但是,.render()似乎删除了很多格式,例如表格边框消失,一些文本居中。我试图避免编辑生成的 html 字符串,.render()但我知道这可能是不可能的。

作为电子邮件发送格式化表格的其他选项是什么?

4

2 回答 2

13

我有同样的问题。所以在渲染 Style 对象后,我创建了一个文本文件并将 Style 对象写入其中。导出文本文件后,将格式更改为 html 就可以了。

f=open("styled_dataframe.txt","w")
f.write(df.render()) # df is the styled dataframe
f.close()
于 2018-05-25T09:50:47.570 回答
1

我也试图格式化一个类似于 to_html 函数的数据框,但会更改字体和颜色。大多数 Google 发现的示例都使用内置的 pandas styler 函数作为示例,但我需要一些更简单的东西。我最终得到的代码是:

df = pd.DataFrame(np.random.randn(15).reshape(5,3))

print(df)
df_styled = df.style.format('{:,.2f}').set_properties(**{
    'font': 'Arial', 'color': 'red', 'text-align': 'center'})
df_styled.set_table_styles([{'props': [('background-color', 'MintCream'), ('color', 'blue'), ('font', 'Arial'), ('font-weight', 'bold')]}])
df_styled.set_table_attributes('border="1"')

with open('test.html', 'w') as f:
    f.write(df_styled.render())

由于我对 python 和 pandas 比较陌生,我最初认为样式器已添加到原始数据框中。我现在明白 df.style..... 返回一个样式化的数据框对象,该对象可以在最终呈现之前处理进一步的属性和属性更改。在这个示例中,我将样式化的数据框渲染到一个文件中,然后可以使用浏览器打开该文件以查看结果。在我的实际应用程序中,我将样式化的数据框呈现为一个字符串对象,然后将其作为 OP 最初想要的 html mime 类型发送并通过电子邮件发送。

于 2021-01-26T23:51:19.783 回答