当前位置: 首页 > 面试题库 >

在pandas上分页dataframe.to_html()

班安平
2023-03-14
问题内容

我有一个巨大的pandas数据框,我正在将dataframe.to_html()其转换为html表,即约1000行。使用分页的任何简便方法都无需滚动整个1000行。例如,查看前50行,然后单击“下一步”查看后续50行?


问题答案:

我能想到的最佳解决方案包括几个外部JS库:JQuery及其DataTables插件。这将使分页工作不仅仅需要很少的努力。

让我们设置一些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)

美丽的结果: 在此处输入图片说明

一些注意事项:

  • 注意字符串中的pageLength参数base_html。这是我定义每页默认行数的地方。您可以在DataTable选项页中找到其他可选参数。
  • 该df_window功能已在Jupyter Notebook中进行了测试,但也应在纯Python中工作。
  • 您可以跳过df_window并将返回的值直接写入df_htmlHTML文件。


 类似资料:
  • 问题内容: 我有一个科学数据库,目前有4,300,000条记录。这是一个科学数据库,并且有API为其提供数据。到2020年6月,我可能会拥有大约1亿条记录。 这是表“输出”的de布局: 顺便说一句,这是伪数据。但是输出是一个包含5列的表格:ID,sensor_ID,速度,速度和方向。 我要实现的是一种 不错的 分页和过滤方法。我想创建一个网站(在nodejs中),其中将显示此+4,000,000条

  • 我正在使用iText 5.5.4生成pdf。 我有一组行,这些行应该分组在一起,并有一个rowspan单元格来命名组。但是,在分页符上,“GRP”一词被分为“G”和“RP”。有没有一种方法可以让这个小组牢不可破,如果它不能放在当前的页面上,就可以在下一页上画出来? 我尝试了同时保持prowstogether和setBreakpoints,但没有得到一致的结果。 布局图像: 上述代码的PDF输出

  • 问题内容: 我有这个数据框: 我想按名称和日期进行汇总以获取数量总和。详细信息: 日期 :组,结果应在星期初(或仅在星期一) 数量 :两个或多个记录具有相同的名称和日期(如果属于相同间隔)的总和 所需的输出如下: 提前致谢 问题答案: 首先转换列 并减去一个星期,因为我们要对日期之前一周进行累加,而不是该日期之前一周。 然后通过W-MON使用with并进行聚合:

  • 问题内容: 是否有任何可用于实现列表分页的库? 假设我有10行的空间,并且用户可以选择是否要按页面向前或向后滚动(因此+-10个项目)。这可能例如由来控制。 要构建一个类,以防止在没有足够的项目可显示时向后/向前滚动,以及自我保存用户当前在哪个页面上的状态,这可能是一项艰巨的工作。 那有什么事吗 问题答案: 我之前已经解决了。我做了一个静态的getPages方法,该方法将通用集合分解为页面列表(也

  • 问题内容: 我正在尝试将页面添加到我的列表中。我遵循了有关智能手机的AngularJS教程,我试图仅显示一定数量的对象。这是我的html文件: 我添加了带有某些值的select标记,以限制将要显示的项目数。我现在想要的是添加分页以显示下一个5、10等。 我有一个与此相关的控制器: 而且我还有一个模块,以便从json文件中检索数据。 问题答案: 如果您没有太多数据,则可以通过将所有数据存储在浏览器中

  • 问题内容: 所以我有一个User表和一个带有用户hasMany Histories的History表,并且我正在尝试在user表上实现分页。 我的问题是我进行了搜索,可以搜索的某些内容是“历史记录”表中的内容。有没有一种方法可以基于hasMany关联的表中的数据来过滤分页结果?最初看起来像是解决方案的Containable允许进行这样的筛选,但只能在关联数据的检索中,而不能在记录本身中进行检索(除

  • 这个和这个问题我都看过了。但我仍然无法为存储库方法设置分页。不确定我是否受到了bug的影响,或者只是写错了。基本上,我想问的是,是否有人可以提供一个示例,说明如何在通过@RepositoryRestResource注释导出的存储库方法上实现分页? 我实现分页的尝试 代码生成的错误消息 我还尝试删除pageable的方法param,结果导致了以下错误: 我在此项目中使用的依赖项。 null 更新:最

  • 问题内容: 我希望数字以这种格式显示。 1 2 3 4 5 ^ 如果我按5,则应该显示5到10 5 6 7 8 9 10 直到最大记录可用。我只想知道如何显示数字。 问题答案: 通常,您希望数据库为分页和排序工作繁重。例如,使用MySQL,您可以通过添加以下内容按日期对结果页面进行排序 到SQL查询的末尾。如果您使用休眠模式,则可以使用标准API以独立于供应商的方式执行此操作: 要显示分页导航,您