pandas DataFrame 方法告诉 ipython notebook 显示为 HTML
What pandas DataFrame method tells ipython notebook to display as HTML
我创建了一个 class,其中主要的可交付数据片段作为 pandas DataFrame 存储在一个属性中。我希望此 class 实例的默认显示行为与此 DataFrame 的默认显示行为相同。特别是在 iPython 笔记本中时。
例如:
from pandas import DataFrame
class TestDFDisplay():
def __init__(self):
self.dataframe = DataFrame([[1, 2], [3, 4]])
tdf = TestDFDisplay()
当我:
tdf.dataframe
我得到一个 HTML 版本的:
0 1
0 1 2
1 3 4
当我:
tdf
我得到:
<__main__.TestDFDisplay instance at 0x000000001A836788>
我宁愿得到与HTML相同的:
0 1
0 1 2
1 3 4
相反,我可以:
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()
但这是一种非常笨拙的方法,可以将任何从 class 实例获取属性的尝试转移到尝试从 DataFrame 获取属性。这行得通,但我宁愿更精确并执行以下操作:
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()
所以当我:
tdf
我得到的是文本版本(与此处显示的相同),而不是我想要的 HTML 版本:
0 1
0 1 2
1 3 4
没关系。这只是意味着 'repr' 方法不是为了在 iPython Notebook 中显示 HTML 而在 DataFrame 上调用的正确方法。
我的问题是:我应该在 DataFrame 上重定向的正确方法是什么?
使用丰富的 (HTML) 显示系统时,您需要 _repr_html_
It's what IPython/Jupyter looks for。
所以在你的 class
class TestDFDisplay():
def __init__(self):
self.dataframe = DataFrame([[1, 2], [3, 4]])
def _repr_html_(self):
return self.dataframe._repr_html_()
应该可以。
我创建了一个 class,其中主要的可交付数据片段作为 pandas DataFrame 存储在一个属性中。我希望此 class 实例的默认显示行为与此 DataFrame 的默认显示行为相同。特别是在 iPython 笔记本中时。
例如:
from pandas import DataFrame
class TestDFDisplay():
def __init__(self):
self.dataframe = DataFrame([[1, 2], [3, 4]])
tdf = TestDFDisplay()
当我:
tdf.dataframe
我得到一个 HTML 版本的:
0 1
0 1 2
1 3 4
当我:
tdf
我得到:
<__main__.TestDFDisplay instance at 0x000000001A836788>
我宁愿得到与HTML相同的:
0 1
0 1 2
1 3 4
相反,我可以:
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()
但这是一种非常笨拙的方法,可以将任何从 class 实例获取属性的尝试转移到尝试从 DataFrame 获取属性。这行得通,但我宁愿更精确并执行以下操作:
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()
所以当我:
tdf
我得到的是文本版本(与此处显示的相同),而不是我想要的 HTML 版本:
0 1
0 1 2
1 3 4
没关系。这只是意味着 'repr' 方法不是为了在 iPython Notebook 中显示 HTML 而在 DataFrame 上调用的正确方法。
我的问题是:我应该在 DataFrame 上重定向的正确方法是什么?
使用丰富的 (HTML) 显示系统时,您需要 _repr_html_
It's what IPython/Jupyter looks for。
所以在你的 class
class TestDFDisplay():
def __init__(self):
self.dataframe = DataFrame([[1, 2], [3, 4]])
def _repr_html_(self):
return self.dataframe._repr_html_()
应该可以。