Pandas 如何根据列中的值预先选择数据表中的行?

Pandas 如何根据列中的值预先选择数据表中的行?,pandas,dataframe,datatables,row,selection,Pandas,Dataframe,Datatables,Row,Selection,情况: 我有一个pandas数据框,我通过df.to_html()将其转换为html表。然后我将DataTables类添加到表中。它有以下列: ID | X | Y | Val |…更多列…|选择| U标准|…更多列。。。 选择条件中的值可以是1或0。我知道: $('#ProductList').DataTable( { ... "fnInitComplete": function(oSettings, json) { $('#ProductList tbody tr:eq(0)').click

情况:

我有一个pandas数据框,我通过df.to_html()将其转换为html表。然后我将DataTables类添加到表中。它有以下列:

ID | X | Y | Val |…更多列…|选择| U标准|…更多列。。。 选择条件中的值可以是1或0。我知道:

$('#ProductList').DataTable( {
...
"fnInitComplete": function(oSettings, json) { $('#ProductList tbody tr:eq(0)').click(); }
}))

(来源:)

..理论上可以选择第一行。(实际上,我无法模拟单击第一行。)

但我的问题更倾向于:如何在选择标准中自动预选值为1的所有行?最好的方法是什么?是否应在客户端/服务器端执行此操作?

在术语“选择”(ing)中,表示筛选出未选择的内容。我知道,在网页上的表格中,选中可能意味着突出显示以从其他表格中脱颖而出。有几种方法可以在服务器端实现这一点。您可以显示两个表,每个选择条件的状态对应一个表。这将避免您首先从表中选择单个行的麻烦(这将使用Javascript而不是Pandas完成)。虽然pandas能够向生成的html添加类,但该类将应用于元素

如果您使用的是jquery,那么您将使用这些部分。由于您没有提供示例数据,所以我无法准确说明

将下一行中的x替换为表中选择标准=1的列数

$( "tr td:nth-child(x):contains('1')" ).addClass('selected');

后端有使用beautifulsoup和css选择器的解决方案,或使用带有xpath选择器的lxml.etree的解决方案。但是jquery将是解决这个问题的最简洁的方法。

您可以通过在初始化数据表时为“rowCallback”选项提供一个函数来实现这一点

另外,通常最好使用API方法来选择行,而不仅仅是更改类。我发现DataTable+Select库保留了选定行索引的内部集合(如果服务器端处理处于打开状态,则仅保留当前页面),而不是使用类解析选定项


因此,尽管显示看起来不错,但如果您只是更改了类,如果您以后依赖任何API方法来获取所选项目,则会出现问题。此外,仅更改行上的类不会触发表上的任何“选择”事件,因此您也不能依赖这些事件。

@alister。谢谢你的指点

这帮助我找到了自己问题的答案。我所做的: 1.)确定加载表时要选择的行索引。 2.)将索引传递给js。 3.)循环索引并对每个索引项应用以下命令:

    table.row(':eq('+hit_index_row+')').select();

因此,我使用API来选择每一行。这对我很有用,希望也能对其他人有所帮助。这可能是有点黑客,所以更优雅的建议是欢迎的

谢谢你的指点!这帮助我找到了自己问题的答案。我所做的: