Julia DataFrames 中的高效自定义排序?

2024-04-09

有没有一种快速的方法来指定自定义订单sort/sort!在 Julia 数据框架上?

julia> using DataFrames

julia> srand(1);

julia> df = DataFrame(x = rand(10), y = rand([:high, :med, :low], 10))
10×2 DataFrames.DataFrame
│ Row │ x          │ y    │
├─────┼────────────┼──────┤
│ 1   │ 0.236033   │ med  │
│ 2   │ 0.346517   │ high │
│ 3   │ 0.312707   │ high │
│ 4   │ 0.00790928 │ med  │
│ 5   │ 0.488613   │ med  │
│ 6   │ 0.210968   │ med  │
│ 7   │ 0.951916   │ low  │
│ 8   │ 0.999905   │ low  │
│ 9   │ 0.251662   │ high │
│ 10  │ 0.986666   │ med  │

julia> sort!(df, cols=[:y])
10×2 DataFrames.DataFrame
│ Row │ x          │ y    │
├─────┼────────────┼──────┤
│ 1   │ 0.346517   │ high │
│ 2   │ 0.312707   │ high │
│ 3   │ 0.251662   │ high │
│ 4   │ 0.951916   │ low  │
│ 5   │ 0.999905   │ low  │
│ 6   │ 0.236033   │ med  │
│ 7   │ 0.00790928 │ med  │
│ 8   │ 0.488613   │ med  │
│ 9   │ 0.210968   │ med  │
│ 10  │ 0.986666   │ med  │

我想要y列排序为:low首先,其次是:med and :high。这样做的最好方法是什么?我知道我可以执行以下操作:

julia> subdfs = []
0-element Array{Any,1}

julia> for val in [:low, :med, :high]
           push!(subdfs, df[df[:y] .== val, :])
       end

julia> vcat(subdfs...)
10×2 DataFrames.DataFrame
│ Row │ x          │ y    │
├─────┼────────────┼──────┤
│ 1   │ 0.951916   │ low  │
│ 2   │ 0.999905   │ low  │
│ 3   │ 0.236033   │ med  │
│ 4   │ 0.00790928 │ med  │
│ 5   │ 0.488613   │ med  │
│ 6   │ 0.210968   │ med  │
│ 7   │ 0.986666   │ med  │
│ 8   │ 0.346517   │ high │
│ 9   │ 0.312707   │ high │
│ 10  │ 0.251662   │ high │

有没有办法在不分配内存的情况下做到这一点,因为在我的实际示例中,df相当大?


您可以定义一个比较函数:

lmhlt(x, y) = x == :low && y != :low || x == :med && y == :high

Then use

sort!(df, lt=lmhlt)

然而,这仍然分配内存。不过它应该低于您当前的版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Julia DataFrames 中的高效自定义排序? 的相关文章

随机推荐

  • Cloud9 Watir/Selenium 测试

    我已经为一个简单的持续集成和交付系统设置了 Cloud9 和 Codeship 它非常适合开发我的网站 应用程序 有没有人能够在 Cloud9 IDE 中开发和运行基于浏览器的 Cucumber 测试 如果是这样 需要什么样的设置 附言 我
  • IIS6 ASP.NET 2.0 应用程序缓存 - 大量数据的数据存储选项和性能

    在 ASP NET 2 0 站点中IIS6我想将键 值对存储在应用程序缓存中 每个键始终是一个长度为 5 个字符的字符串 每个值都是一个长度为 15 250 个字符的字符串 使用场景是 每个网页请求都会查询一次缓存 如果键存在 则使用值 否
  • 如何重命名我的 asp.net 网页

    我的页面名称为 XYZ aspx 现在我想更改ABC aspx我应该怎么做 当我直接从解决方案资源管理器更改它时 它给了我一个错误 谁可以帮我这个事 谢谢 Smartdev ASP NET 文件通常由 1 3 个文件组成 具体取决于项目类型
  • iText5.1.0在文档中设置页眉和页脚[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在使用 servlet 来查看
  • 无需 MSI 文件即可卸载

    我经常遇到 Windows Installer 尝试卸载软件包的问题 但它抱怨 您尝试使用的功能所在的网络资源不可用 当原始 MSI 根本不可用时 是否有已知的方法可以卸载此类软件包 请注意 微软现在已经发布了一个官方工具来解决这些问题 并
  • 替换序列化数据中的类名

    我想在序列化数据流中将字符串 com oldpackage className 替换为 com newPackage className 该序列化数据从数据库中读取并在替换字符串后更新 我在做同样的事情时遇到了一些问题 如果您已经猜到了 这
  • appdeeplink Github .wellknown 文件夹无法识别

    I am adding app deep linking functionality in my app i followed as per applink assist i created well known folder in git
  • DELETE 请求正文的 RESTful 替代方案

    虽然HTTP 1 1 规范 http www w3 org Protocols rfc2616 rfc2616 html好像allow消息正文DELETE http www w3 org Protocols rfc2616 rfc2616
  • Android 4.x - 系统覆盖 - 无法捕获触摸事件

    我正在尝试为 Android 4 4 创建一个简单的覆盖应用程序 我找到了一个在屏幕上绘制按钮的示例 一切正常 但触摸事件侦听器未触发 import android app Service import android content In
  • Android 谷歌地图 v2 moveCamera 不起作用

    我正在尝试像这样控制谷歌地图相机 private void setUpMap Log e LOG TAG in setup method mMap setMyLocationEnabled true LatLng startingPoint
  • 异步 POST 请求 - R,使用 RCurl?

    我正在尝试从 R 向 REST API 发出异步请求 下面的 curl 命令说明了我需要传递给 api 的参数 我给你们提供了 linux curl 命令 希望这能让你们明白 curl v X POST https app example
  • 如何腌制或存储 Jupyter (IPython) 笔记本会话以供以后使用

    假设我正在 Jupyter Ipython 笔记本中进行更大的数据分析 并完成大量耗时的计算 然后 由于某种原因 我必须关闭jupyter本地服务器I 但我想稍后再返回进行分析 而不必再次进行所有耗时的计算 我喜欢喜欢做的是pickle或者
  • Grails 3 和 Spring @RequestMapping

    在 Grails 3 中 我尝试使用 spring security oauth 它通过 RequestMapping 提供了一些端点 我可以在 mbean 中看到路径已配置 但任何请求总是会命中 grails 并返回 404 这些请求似乎
  • 如何序列化 Jackson 的 JsonNode 对象?

    我正在用 memcached 替换内部缓存系统 但 memcached 客户端无法缓存JsonNode对象 因为它们没有实现Serializable 有什么方法可以实现序列化JsonNode目的 杰克逊提供吗Serializable相当于这
  • python中,按日期字段排序,字段有时可能为null

    我很难想出一个巧妙的方法来处理这种情况 我有从数据库读取回来的数据 我想按会计日期排序 然而 accoutingdate 有时可能为空 我目前正在做以下事情 results sorted results key operator itemg
  • Rails - 禁用选择中的选项(根据条件)

    我已经选择 f select category id categories html options gt class gt select box disabled gt true if category id 18 上面的代码显然返回一个
  • Highcharts 反转折线图在最小值处部分隐藏

    当使用具有最小值和最大值的反向折线图时 线条在最小值处部分隐藏 问题在于绘图画布恰好在最小值线处结束 当一条粗线只有一部分可见时 位于最小值线上方的部分将被隐藏 你可以看一个例子here http jsfiddle net DruGa 2
  • 等待进程组时 waitpid() 无子进程错误

    编写我自己的玩具外壳 并在尝试实现作业控制时遇到了障碍 我正在使用 setpgid 在子进程和父进程中设置子进程组 我的等待电话是 pid waitpid pid status 0 然而 waitpid 返回 1 并且 perror 说 没
  • 从 unicode 字符串中去除特殊字符和标点符号

    我正在尝试从 unicode 字符串中删除标点符号 该字符串可能包含非 ASCII 字母 我尝试使用regex module import regex text u lt ik gt regex sub ur p P text 然而 我注意
  • Julia DataFrames 中的高效自定义排序?

    有没有一种快速的方法来指定自定义订单sort sort 在 Julia 数据框架上 julia gt using DataFrames julia gt srand 1 julia gt df DataFrame x rand 10 y r