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

使用GNU parallel计算多文件的整体中位数

解决整体中位数计算问题

你之前的命令是先单独计算每个文件第三列的中位数,再对这些中位数取中位数,这确实不是所有数据的整体中位数——要得到正确结果,得把所有文件的第三列数据全部汇总后再计算中位数。

直接用这个命令就行:

find 01/ -type f -name '*.csv.gz' | parallel "pigz -dc {} | cut -d, -f3" | datamash median 1

命令拆解:

  • pigz -dc {}:解压指定的.gz文件,输出到标准输出
  • cut -d, -f3:以逗号为分隔符,提取每行的第三列数据
  • 所有文件的第三列数据会被集中到一起,最后由datamash median 1计算这一整列数据的整体中位数

额外说明(如果文件有表头):

如果每个CSV文件的第一行是表头,得先跳过表头避免干扰计算,命令调整为:

find 01/ -type f -name '*.csv.gz' | parallel "pigz -dc {} | tail -n +2 | cut -d, -f3" | datamash median 1

这里tail -n +2的作用是跳过每个文件的第一行(表头行)。

内容的提问来源于stack exchange,提问作者kiasari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 11:52:04