0

对数据集执行查询后,如何检索原始行的索引?

我正在使用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]
4

2 回答 2

1

在过滤之前,您可以使用静态方法 IntColumn.indexColumn() 创建索引列并提供必要的参数。例如

table.addColumns(IntColumn.indexColumn("Index", table.rowCount(), 0));

这将创建一个以 0 开头的索引列。

于 2020-12-17T00:10:02.390 回答
0

过滤会创建一个新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]

于 2020-12-16T11:26:06.340 回答