pandas dataframe to_html formatters - не может отобразить изображение - PullRequest
1 голос
/ 18 октября 2019

Я пытаюсь добавить стрелки вверх и вниз к фрейму данных pandas с to_html для отчета по электронной почте.

Я использую лямбда-функцию для ввода стрелки вверх и вниз на значения столбцов в моих данныхфрейм, я знаю, что html-изображение работает нормально, потому что я могу поместить его в тело письма, и оно работает нормально, но когда я использую эту функцию и средство форматирования pandas, оно выводит, как на картинке ниже (пс. я знаю, что CID отличаетсяк тому, что в моей функции, я просто что-то тестировал)

У кого-нибудь есть идеи, почему? Или у кого-нибудь есть лучший способ сделать это?

pandas formatter error

вызов:

worst_20_accounts.to_html(index=False,formatters={'Last Run Rank Difference': lambda x: check_html_val_for_arrow(x)}))

функция:

def check_html_val_for_arrow(x):
    try:
        if x > 0:
            return str(x) + ' <img src="cid:image7">'
        elif x < 0:
            return str(x) + ' <img src="cid:image8">'
        else:
            return str(x)
    except:
        return str(x)

1 Ответ

1 голос
/ 18 октября 2019

escape=False

По умолчанию метод pandas.DataFrame.to_html экранирует любой html в значениях фрейма данных.

my_img_snippet = (
    "<img src='https://www.pnglot.com/pngfile/detail/"
    "208-2086079_right-green-arrow-right-green-png-arrow.png'>"
)
df =  pd.DataFrame([[my_img_snippet]])

Затем

from IPython.display import HTML
HTML(df.to_html(escape=False))

enter image description here


style

Вы можете позволить объекту styler обрабатывать рендеринг

df.style

enter image description here

...