在dataset上执行查询后,如何检索原始行的索引?
我正在使用JTablesaw作为Java中的一个数据集库,并且我正在寻找一种在对其执行查询/过滤之后获取原始行的索引的方法。
例如,考虑这个数据集:
A,B,C
10,5,3
4,7,2
6,9,1和下面的代码
Table table = Table.read().file("data.csv");
Table result = table.where(rows -> rows.intColumn("A").isGreaterThanOrEqualTo(6));其结果表为:
A,B,C
10,5,3
6,9,1如何获得原始行索引的输出?例如。
[0,2]发布于 2020-12-17 08:10:02
在过滤之前,您可以使用静态方法IntColumn.indexColumn()并提供必要的参数来创建索引列。例如
table.addColumns(IntColumn.indexColumn("Index", table.rowCount(), 0));这将创建一个以0开头的索引列。
发布于 2020-12-16 19:26:06
筛选会创建一个新的Table对象,并且缺少从原始表中提取行的索引的选项。
一种解决方案是创建一个如下所示的方法,允许在原始表上进行某种动态迭代,以获得索引:
private List<Integer> collectIndices( Table table, String columnName, int condition ) {
List<Integer> indices = new ArrayList<>();
for ( int i = 0; i < table.rowCount(); i++ ) {
if ( table.row( i ).getInt( columnName ) >= condition ) {
indices.add( i );
}
}
return indices;
}collectIndices( table, "A", 6 );返回[0, 2]
https://stackoverflow.com/questions/65320079
复制相似问题