gpt4 book ai didi

python - pandas dataframe.to_html() 上的分页

转载 作者:太空狗 更新时间:2023-10-29 21:05:08 25 4
gpt4 key购买 nike

我有一个巨大的 Pandas 数据框,我正在将其转换为 html 表,即 dataframe.to_html(),它大约有 1000 行。使用分页的任何简单方法,这样我就不必滚动整个 1000 行。比如,查看前 50 行,然后单击下一步以查看后续 50 行?

最佳答案

2022 年更新

现在似乎有一个简单而现代的解决方案,使用 itables .

安装:

pip install itables

基本用法(来自 GitHub 自述文件):

from itables import show

show(df)

结果: itables result

默认情况下,还有一个命令可以像这样显示笔记本中的所有表格。

原始答案(将表格导出到 HTML 文件)

我能想到的最佳解决方案涉及几个外部 JS 库:JQuery及其 DataTables plugin .这将允许比分页更多,而且只需很少的努力。

让我们设置一些 HTML、JS 和 python:

from tempfile import NamedTemporaryFile
import webbrowser

base_html = """
<!doctype html>
<html><head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.css">
<script type="text/javascript" src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.js"></script>
</head><body>%s<script type="text/javascript">$(document).ready(function(){$('table').DataTable({
"pageLength": 50
});});</script>
</body></html>
"""

def df_html(df):
"""HTML table with pagination and other goodies"""
df_html = df.to_html()
return base_html % df_html

def df_window(df):
"""Open dataframe in browser window using a temporary file"""
with NamedTemporaryFile(delete=False, suffix='.html') as f:
f.write(df_html(df))
webbrowser.open(f.name)

现在我们可以加载一个样本数据集来测试它:

from sklearn.datasets import load_iris
import pandas as pd

iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)

df_window(df)

漂亮的结果: enter image description here

一些注意事项:

  • 注意 base_html 字符串中的 pageLength 参数。这是我定义每页默认行数的地方。您可以在 DataTable options page 中找到其他可选参数.
  • df_window 函数已在 Jupyter Notebook 中进行了测试,但应该也可以在纯 Python 中运行。
  • 您可以跳过 df_window,只需将 df_html 的返回值写入 HTML 文件即可。

编辑:如何使用远程 session (例如 Colab)使其工作

在远程笔记本上工作时,例如在 Colab 或 Kaggle 中,临时文件方法将不起作用,因为文件保存在远程计算机上,您的浏览器无法访问。一个解决方法是下载构建的 HTML 并在本地打开它(添加到以前的代码中):

import base64
from IPython.core.display import display, HTML

my_html = df_html(df)
my_html_base64 = base64.b64encode(my_html.encode()).decode('utf-8')
display(HTML(f'<a download href="data:text/html;base64,{my_html_base64}" target="_blank">Download HTML</a>'))

这将生成一个包含编码为 base64 字符串的整个 HTML 的链接。单击它将下载 HTML 文件,然后您可以直接打开它并查看表格。

关于python - pandas dataframe.to_html() 上的分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38893448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com