Я пытаюсь отобразить несколько pandas кадров данных по горизонтали в записной книжке Jupyter, но сталкиваюсь с ситуацией, когда стиль 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)
Результат этого вывода: ![enter image description here](https://i.stack.imgur.com/NaCqr.png)
Следующий вызов:
display_multi_table(tables, True)
Результаты в этом выводе: ![enter image description here](https://i.stack.imgur.com/m2TEM.png)
Моя цель: добиться вывода в нижней части второго снимка экрана, не вызывая display
.
Вещи, которые я пробовал / проверял:
- Если я не стилизирую pandas фрейм данных, и использую просто вызов
.to_html()
на фрейме данных вместо вызова .render()
в стайлере эта проблема не существует. Однако мне нужно, чтобы это работало с стилем данных. - Я подтвердил, что значение, возвращаемое
table.render()
до и после вызова display
, действительно отличается.