首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在使用DataFrames.jl时,通过与前面的行进行比较来筛选/选择行?

在使用DataFrames.jl时,通过与前面的行进行比较来筛选/选择行?
EN

Stack Overflow用户
提问于 2021-10-17 06:35:09
回答 1查看 66关注 0票数 1

我有一个大小为659x2的DataFrame,并根据它的Low列进行排序。它的前20行如下所示:

代码语言:javascript
运行
复制
julia> size(dfl)
(659, 2)

julia> first(dfl, 20)
20×2 DataFrame
 Row │ Date        Low
     │ Date…       Float64
─────┼──────────────────────
   1 │ 2010-05-06  0.708333
   2 │ 2010-07-01  0.717292
   3 │ 2010-08-27  0.764583
   4 │ 2010-08-31  0.776146
   5 │ 2010-08-25  0.783125
   6 │ 2010-05-25  0.808333
   7 │ 2010-06-08  0.820938
   8 │ 2010-07-20  0.82375
   9 │ 2010-05-21  0.824792
  10 │ 2010-08-16  0.842188
  11 │ 2010-08-12  0.849688
  12 │ 2010-02-25  0.871979
  13 │ 2010-02-23  0.879896
  14 │ 2010-07-30  0.890729
  15 │ 2010-06-01  0.916667
  16 │ 2010-08-06  0.949271
  17 │ 2010-09-10  0.949792
  18 │ 2010-03-04  0.969375
  19 │ 2010-05-17  0.9875
  20 │ 2010-03-09  1.0349

我想要做的是过滤掉这个数据文件中的所有行,这样只有单调增加日期的行才会保留。因此,如果应用于上面的前20行,我希望输出如下:

代码语言:javascript
运行
复制
julia> my_filter_or_subset(f, first(dfl, 20))
5×2 DataFrame
 Row │ Date        Low
     │ Date…       Float64
─────┼──────────────────────
   1 │ 2010-05-06  0.708333
   2 │ 2010-07-01  0.717292
   3 │ 2010-08-27  0.764583
   4 │ 2010-08-31  0.776146
   5 │ 2010-09-10  0.949792

有什么高级的方法可以用朱莉娅和DataFrames.jl来实现这一点吗?

我还应该注意,我最初使用Pandas在Python中对解决方案进行了原型化,而b/c --这只是一个PoC --我也没有费心想出如何使用Pandas来实现这个目的(假设它是可能的)。相反,我只是使用Python循环来迭代数据帧的每一行,然后只追加日期大于增长列表的最后一个日期的行。

我现在正试图用Julia更好地编写这篇文章,并研究了filtersubset方法在DataFrames.jl中的应用。直观地说,filter似乎不起作用,因为用户提供的过滤器函数只能访问每一行的内容;subset可能是可行的,因为它可以访问整个列的数据。但在我看来,如果这是可能的话,如何干净有效地做这件事并不是显而易见的。如果不是,那么我就不得不坚持使用for循环了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-17 07:39:09

这个任务需要使用performance.

  • If循环(必须循环所有值),朱莉娅循环中的

  • 是快速的,所以使用您自己的for循环不会妨碍

  • ,您正在寻找的是相对较短的输入(但它将比自定义的for循环慢一些,因为它将在几次传递中执行操作),您可以使用例如:

代码语言:javascript
运行
复制
dfl[pushfirst!(diff(accumulate(max, dfl.Date)) .> 0, true), :]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69601877

复制
相关文章

相似问题

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