You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Miller提取各分组最大值对应的完整行(单遍处理大文件)

问题:用Miller按分组提取最大值对应的完整行

现有data.csv数据如下:

year,value,country
2000,13,ES
2001,18,IT
2002,16,TZ
2003,14,TZ
2004,10,ES

需求:按country分组,提取每个分组中value最大值对应的完整行,期望输出:

year,value_max,country
2000,13,ES
2001,18,IT
2002,16,TZ

使用mlr --csv stats1 -a max -f value -g country仅返回value和country列,缺少year列;且数据量较大,要求实现单遍处理。


解决方案

使用Miller的top命令配合字段重命名,实现单遍扫描完成需求:

mlr --csv top -n 1 -g country -s -value then rename value,value_max data.csv

命令解释:

  • --csv:指定输入输出为CSV格式
  • top -n 1 -g country -s -value:
    • -g country:按country字段分组
    • -s -value:对每个分组内的行按value字段降序排序(-表示降序)
    • -n 1:每个分组仅保留排序后的第1行(即value最大的行)
  • then rename value,value_max:将原value列重命名为value_max,匹配期望输出的列名

该命令仅需遍历一次数据,完全满足大数据量下的性能要求。


内容的提问来源于stack exchange,提问作者mikael-s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 00:57:10