Ответ 1
Это занимает несколько шагов:
Первый импорт HTML
и re
from IPython.display import HTML
import re
Вы можете получить HTML
pandas с помощью метода to_html
.
df_html = df.to_html()
Затем мы собираемся создать случайный идентификатор таблицы html и стиля, который мы собираемся создать.
random_id = 'id%d' % np.random.choice(np.arange(1000000))
Поскольку мы собираемся вставить какой-то стиль, нам нужно быть осторожным, чтобы указать, что этот стиль будет только для нашей таблицы. Теперь вставьте это в df_html
df_html = re.sub(r'<table', r'<table id=%s ' % random_id, df_html)
И создайте тег стиля. Это действительно зависит от вас. Я просто добавил эффект зависания.
style = """
<style>
table#{random_id} tr:hover {{background-color: #f5f5f5}}
</style>
""".format(random_id=random_id)
Наконец, отобразите его
HTML(style + df_html)
Функция все в одном.
def HTML_with_style(df, style=None, random_id=None):
from IPython.display import HTML
import numpy as np
import re
df_html = df.to_html()
if random_id is None:
random_id = 'id%d' % np.random.choice(np.arange(1000000))
if style is None:
style = """
<style>
table#{random_id} {{color: blue}}
</style>
""".format(random_id=random_id)
else:
new_style = []
s = re.sub(r'</?style>', '', style).strip()
for line in s.split('\n'):
line = line.strip()
if not re.match(r'^table', line):
line = re.sub(r'^', 'table ', line)
new_style.append(line)
new_style = ['<style>'] + new_style + ['</style>']
style = re.sub(r'table(#\S+)?', 'table#%s' % random_id, '\n'.join(new_style))
df_html = re.sub(r'<table', r'<table id=%s ' % random_id, df_html)
return HTML(style + df_html)
Используйте его следующим образом:
HTML_with_style(df.head())
HTML_with_style(df.head(), '<style>table {color: red}</style>')
style = """
<style>
tr:nth-child(even) {color: green;}
tr:nth-child(odd) {color: aqua;}
</style>
"""
HTML_with_style(df.head(), style)
Изучите CSS и сходите с ума!