首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tablesaw:如何在过滤后获得原始行的索引?

Tablesaw:如何在过滤后获得原始行的索引?
EN

Stack Overflow用户
提问于 2020-12-16 16:55:26
回答 2查看 104关注 0票数 0

在dataset上执行查询后,如何检索原始行的索引?

我正在使用JTablesaw作为Java中的一个数据集库,并且我正在寻找一种在对其执行查询/过滤之后获取原始行的索引的方法。

例如,考虑这个数据集:

代码语言:javascript
复制
A,B,C
10,5,3
4,7,2
6,9,1

和下面的代码

代码语言:javascript
复制
Table table = Table.read().file("data.csv");
Table result = table.where(rows -> rows.intColumn("A").isGreaterThanOrEqualTo(6));

其结果表为:

代码语言:javascript
复制
A,B,C
10,5,3
6,9,1

如何获得原始行索引的输出?例如。

代码语言:javascript
复制
[0,2]
EN

回答 2

Stack Overflow用户

发布于 2020-12-17 08:10:02

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

代码语言:javascript
复制
table.addColumns(IntColumn.indexColumn("Index", table.rowCount(), 0));

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

票数 1
EN

Stack Overflow用户

发布于 2020-12-16 19:26:06

筛选会创建一个新的Table对象,并且缺少从原始表中提取行的索引的选项。

一种解决方案是创建一个如下所示的方法,允许在原始表上进行某种动态迭代,以获得索引:

代码语言:javascript
复制
    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]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65320079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档