pythonpandasipythonjupyter-notebook

Pandas / IPython Notebook: Include and display an Image in a dataframe


I have a pandas Dataframe which also has a column with a filename of an image. How can I display the image inside of the DataFrame?

I tried the following:

import pandas as pd
from IPython.display import Image

df = pd.DataFrame(['./image01.png', './image02.png'], columns = ['Image'])

df['Image'] = Image(df['Image'])

But when I show the frame, each column only shows the to_string representation of the Image Object.

    Image
0   IPython.core.display.Image object
1   IPython.core.display.Image object

Is there any solution for this?

Thanks for your help.


Solution

  • Instead of inserting the html code into the dataframe, I suggest to use a formatter. Unfortunately you need to set the truncation settings, so long text doesn't get truncated with "...".

    import pandas as pd
    from IPython.display import HTML
    
    df = pd.DataFrame(['./image01.png', './image02.png'], columns=['Image'])
    
    def path_to_image_html(path):
        return '<img src="'+ path + '"/>'
    
    pd.set_option('display.max_colwidth', -1)
    
    HTML(df.to_html(escape=False, formatters={'Image': path_to_image_html}))