J'ai créé une classe dans laquelle la donnée livrable principale est stockée dans un attribut sous forme de pandas DataFrame. Je voudrais que le comportement d'affichage par défaut des instances de cette classe soit le même que celui de ce DataFrame. Particulièrement quand dans iPython Notebook.Quelle méthode pandas DataFrame dit à ipython notebook d'afficher en HTML
par exemple:
from pandas import DataFrame
class TestDFDisplay():
def __init__(self):
self.dataframe = DataFrame([[1, 2], [3, 4]])
tdf = TestDFDisplay()
quand je:
tdf.dataframe
je reçois une version HTML:
0 1
0 1 2
1 3 4
quand je:
tdf
je reçois:
<__main__.TestDFDisplay instance at 0x000000001A836788>
Je préfère avoir le même code HTML de:
0 1
0 1 2
1 3 4
Au lieu de cela, je pouvais:
from pandas import DataFrame
class TestDFDisplay():
def __init__(self):
self.dataframe = DataFrame([[1, 2], [3, 4]])
def __getattr__(self, item):
try:
return object.__getattribute__(self, item)
except AttributeError:
try:
return getattr(self.dataframe, item)
except:
raise AttributeError
tdf = TestDFDisplay()
mais c'est une façon très lourde main de détourner toute tentative d'obtenir un attribut de l'instance de classe pour tenter de l'obtenir à partir du DataFrame. Cela fonctionne, mais je préfère être plus précis et faire un peu comme ce qui suit:
from pandas import DataFrame
class TestDFDisplay():
def __init__(self):
self.dataframe = DataFrame([[1, 2], [3, 4]])
def __repr__(self):
return self.dataframe.__repr__()
tdf = TestDFDisplay()
Alors, quand je:
tdf
Je reçois la version texte (qui est la même que celle affichée ici) et non la version HTML que je veux:
0 1
0 1 2
1 3 4
Ce n'est pas grave. Cela signifie simplement que la méthode 'repr' n'était pas la bonne méthode appelée sur le DataFrame pour afficher le code HTML dans iPython Notebook.
Ma question est: Quelle est la bonne méthode que je devrais rediriger sur le DataFrame?
Merci, PiR