我试图在 Jupyter 笔记本中水平显示几个 pandas 数据帧,但遇到了样式器的 HTML 格式不正确的情况。
我有以下代码片段:
import numpy as np
import pandas as pd
from IPython.display import display, HTML
def display_multi_table(table_list, with_display):
if with_display:
for t in table_list: display(t)
return HTML(
'<table><tr style="background-color:white;">' +
''.join(['<td style="height:300px;width:300px">' + table.render() + '</td>' for table in table_list]) +
'</tr></table>'
)
d = dict([(f"column_{i}", np.random.rand(5)) for i in range(3)])
tables = [pd.DataFrame(d).style.set_caption("Title") for i in range(3)]
以下调用:
display_multi_table(tables, False)
以下调用:
display_multi_table(tables, True)
我的目标:实现第二个屏幕截图底部的输出,而无需调用display
.
我尝试过/检查过的事情:
- 如果我不设置 pandas 数据框的样式,而只是调用
.to_html()
数据框而不是调用.render()
样式器,则不存在此问题。但是,我需要它来处理样式数据框。 - 我已经确认
table.render()
调用前后返回的值display
确实不同。