2016-05-21 7 views
4

Ich habe einen Pandas Dataframe, der auch eine Spalte mit dem Dateinamen eines Bildes hat. Wie kann ich das Bild im DataFrame anzeigen?Pandas/IPython Notebook: Ein Bild in einen Datenrahmen einbinden und anzeigen

Ich habe versucht, die folgenden:

import pandas as pd 
from IPython.display import Image 

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

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

Aber wenn ich den Rahmen zeigen, jede Spalte zeigt nur die to_string Darstellung des Bildobjekt.

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

Gibt es eine Lösung dafür?

Danke für Ihre Hilfe.

Antwort

1

Ich denke, Sie missverstehen, was in einem Datenrahmen gespeichert wird und verwirren es mit, wie es angezeigt wird. Um ein Bild in der HTML-Tabellendarstellung anzuzeigen, müssten Sie eine eigene Funktion schreiben, um ein Bild-Tag in die HTML-Tabellenzelle einzufügen.

7

Die Lösung, die ich fand, ist, das IPython.display Image nicht zu verwenden, aber das IPython.display HTML und das to_html (escape = False) Feature eines Datenrahmens zu verwenden.

Insgesamt sieht es wie folgt aus:

import pandas as pd 
from IPython.display import Image, HTML 

df = pd.DataFrame(['<img src="image01.png"/>', './image02.png'], columns = ['Image']) 

HTML(df.to_html(escape=False)) 
5

Statt den HTML-Code in den Datenrahmen einzufügen, schlage ich vor, einen Formatierer zu verwenden. Leider müssen Sie die Abschneideeinstellungen festlegen, damit der lange Text nicht mit "..." abgeschnitten wird.

import pandas as pd 
from IPython.display import Image, 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=dict(Image=path_to_image_html)))