我正在使用Jupyter笔记本和熊猫数据框查看一些3D和4D矩阵。 我正在使用@Attack68在本question中回复的内容
问题是,当我只使用一个jupyter单元生成数据帧,而不调用“display”函数时,它工作得很好,可以完美地运行HTML代码。您可以在此处看到一个示例:
import pandas as pd
data = [
[[1]],
[[1.0,2.0],[2.0,4.0],[8.0,3.0],[9.0,7.0]],
[[0.487],[1.532],[1.544],[1.846]],
[[3.0]],
[[3.0]],
[[-1]],
]
df = pd.DataFrame([
[(pd.DataFrame(x)
.style
.hide_index()
.hide_columns()
.set_table_attributes('class="matrix"')
.to_html()
) for x in data]
], dtype="object")
df.style.set_table_styles([
{"selector": ".matrix", "props": "position: relative;"},
{"selector": ".matrix:before, .matrix:after",
"props": 'content: ""; position: absolute; top: 0; border: 1px solid #000; width: 6px; height: 100%;'
},
{"selector": ".matrix:before", "props": "left: -0px; border-right: -0;"},
{"selector": ".matrix:after", "props": "right: -0px; border-left: 0;"}
])
这将导致: Intended_Result(我的声誉不足以使用内联映像。很抱歉给您带来不便)
但是,问题是,只要我添加display函数来显示表,它就会停止编译HTML代码并显示矩阵本身,而只返回代码作为数据框单元格
import pandas as pd
data = [
[[1]],
[[1.0,2.0],[2.0,4.0],[8.0,3.0],[9.0,7.0]],
[[0.487],[1.532],[1.544],[1.846]],
[[3.0]],
[[3.0]],
[[-1]],
]
df = pd.DataFrame([
[(pd.DataFrame(x)
.style
.hide_index()
.hide_columns()
.set_table_attributes('class="matrix"')
.to_html()
) for x in data]
], dtype="object")
df.style.set_table_styles([
{"selector": ".matrix", "props": "position: relative;"},
{"selector": ".matrix:before, .matrix:after",
"props": 'content: ""; position: absolute; top: 0; border: 1px solid #000; width: 6px; height: 100%;'
},
{"selector": ".matrix:before", "props": "left: -0px; border-right: -0;"},
{"selector": ".matrix:after", "props": "right: -0px; border-left: 0;"}
])
display(df)
您可以在此处看到结果: Wrong_Results
谢谢
df
是DataFrame
类对象df.style
返回一个Styler
类对象df.style.some_style_function()
还返回一个Styler
类对象当Jupyter笔记本中返回的最后一项是
Styler
对象,该对象具有_repr_html_()
方法时,调用该方法并生成HTML 显示在单元格中当您调用
display(df)
时,实际上是在调用df._repr_html_()
,这显然与df.style.some_styler_function()._repr_html_()
不同,因为它们是不同的python对象此外
df._repr_html_()
还有一个列宽微调选项,这意味着单元格的末尾有...
,这会阻止HTML正确呈现。如果您查看pandas.options
的文档,可以关闭该功能首先,我非常感激Attack69的帮助。下面的解决方案完全是在他的帮助下完成的。在我理解了Styler和DataFrame之间的区别后,我只做了一个简单的编辑,@Attack69
解决方案似乎非常简单,我们只需要使用
display(df.style)
而不是display(df)
同样,我不知道如果没有@Attack68的帮助,我需要多长时间才能想出解决方案。谢谢你帮我解答我的基本问题。我在这方面是新手
相关问题 更多 >
编程相关推荐