我在使用“classes”参数和Pandas的“to_html”方法对DataFrame进行样式化时遇到了问题。
“classes:str or list or tuple,default None CSS class(es)to apply to the result html table”from:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_html.html
我可以像这样渲染一个样式化的DataFrame(例如):
df = pd.DataFrame([[1, 2], [1, 3], [4, 6]], columns=['A', 'B'])
myhtml = df.style.set_properties(**{'font-size': '11pt', 'font-family': 'Calibri','border-collapse': 'collapse','border': '1px solid black'}).render()
with open('myhtml.html','w') as f:
f.write(myhtml)
我如何使用“classes”和“to_html”来样式化DataFrame的html输出,如下所示:
df.to_html('myhtml.html',classes=<something here>)
7条答案
按热度按时间sy5wg1nm1#
Pandas的
to_html
只是输出一个包含HTML表格标记的大字符串。classes参数是一个方便的处理程序,用于为<table>
给予一个 class 属性,该属性将在以前创建的样式化它的CSS文档中引用。因此,将to_html
合并到引用外部CSS的更广泛的HTML文档构建中。有趣的是,
to_html
增加了双重类<table class="dataframe mystyle">
,可以在CSS中单独引用,.dataframe {...} .mystyle{...}
,或者一起引用.dataframe.mystyle {...}
。下面用随机数据进行说明。数据
CSS*(保存为df_style.css)*
Pandas
输出
HTML*(引用df_style.css,假设在同一目录下;见表中的类参数)*
zzwlnbp82#
本质上,pandas.to_html()只是导出一个普通的HTML表。您可以将表格插入正文中的任何位置,并通过样式部分中的CSS控制样式。
eanckbw93#
我发现最精确的,坦率地说最简单的方法是跳过样式,to_html()等。以及使用df.to_dict()方法将DF转换为字典。
具体来说,给我带来麻烦的是在outlook电子邮件中显示样式化的pandas html,因为pandas产生的css混乱无法正确呈现。
迭代dict并在那里生成html,只需将键/值 Package 在您需要的标签中,添加类等。并将其连接成一个字符串。然后粘贴这个字符串到一个准备好的模板与预定义的css。
为了方便起见,我发现导出相同的df两次是很有用的,使用.to_dict()和to_dict('index')首先填充列,然后逐行向下工作。或者,只需要一个相关列名的列表。
然后return_str进入模板。
yrefmtwq4#
这要归功于X1 E0 F1 X的回答--我能够将他们的解决方案定制成更精确的东西。我个人喜欢根据某些值有条件地格式化我的表格。
我发现生成你自己的HTML是最精确的方法,给你完全的控制。
**结果:**整齐的条件格式表
a9wyjsp75#
我是这么做的
为css代码创建一个文本文件,并在这里写下你的css代码,比如css_style. txt现在将这个txt文件作为一个字符串在你的python文件中读取
with open('css_style.txt', 'r') as myfile: style = myfile.read()
现在在HTML代码中
在我的例子中,css_style.txt文件是
cs7cruho6#
为了添加到我早期的
to_html
answer中,新的Pandas 1.3.0+to_xml
可以仅使用样式表(即CSS和XSLT)呈现HTML文档,而无需任何字符串格式。虽然XSLT在复制相同的HTML表设计时会有点复杂,但它对于用户定义的更改是开放的。
数据
CSS*(保存为DataFrameStyle.css)*
XSLT*(保存为DataFrameStyle.xsl;references .css)*
Pandas
输出
t30tvxxf7#
由于pandas
to_html
缺少功能使用下面的代码,你可以重复列作为
<tr>
属性,这对于静止,写事件等是必不可少的。参数
row_attrs
(列表,可选):要作为属性写入行<tr>
元素的列列表。默认为无。row_cols
(列表,可选):要作为子元素写入<td>
元素的row元素中的列的列表。默认为所有列。用法
注意:
<tr>
行属性名为小写。进一步建议:表上的其他自定义仍然可以使用
etree
包中的ElementTree
完成。