对包含 3 列的 csv 文件进行排序

对包含 3 列的 csv 文件进行排序

我正在尝试对包含 3 个值的 csv 文件进行排序。第一个值很重要。它包含数字 1、2、3、4 等的很多次。但每个数字出现的次数与其他数字不同。因此,我想从第一列开始对 csv 文件进行排序,从每个数字出现次数较少到出现次数最多。

例如 - 我没有提到第二行和第三行,因为我希望它按第一列排序

1
1
1
2
2
2
2
2
3
4
4

->

3
4
4
1
1
1
2
2
2
2

使用 mac 但我可以访问 linux

这是文件:http://www.mediafire.com/file/v0azlrb3sx9r5x7/example.csv/文件

答案1

尝试这个,

awk 'BEGIN{FS=OFS=","} NR==FNR{s[$1]++} NR>FNR{print s[$1],$0}' csvfile csvfile \
| sort -n | cut -d, -f2-
  • awk将计算第一个字段出现的次数(s[$1]++),然后将其添加(print s[$1],$0到行)。(注意,这awk需要读取文件两次)。
  • sort -n将对结果进行排序
  • cut -d, -f2-将再次删除该号码。

答案2

使用 Miller (https://github.com/johnkerl/miller)你可以将此命令应用于你的 TSV

mlr --tsv count-similar -g type -o count then sort -n count ./example.csv >./output.tsv

有类似的东西

+------+-------+-----------+-------+
| type | value | condition | count |
+------+-------+-----------+-------+
| 66   | 0     | hela      | 2     |
| 66   | 0     | hela      | 2     |
| 23   | 1     | hela      | 6     |
| 23   | 1     | hela      | 6     |
| 23   | 1     | hela      | 6     |
| 23   | 1     | hela      | 6     |
| 23   | 1     | hela      | 6     |
| 23   | 1     | hela      | 6     |
| 27   | 1     | hela      | 9     |
| 27   | 1     | hela      | 9     |
| 27   | 1     | hela      | 9     |
| 27   | 1     | hela      | 9     |
| 27   | 1     | hela      | 9     |
| 27   | 1     | hela      | 9     |
| 27   | 1     | hela      | 9     |
| 27   | 1     | hela      | 9     |
| 27   | 1     | hela      | 9     |
| 34   | 0     | hela      | 9     |
| 34   | 0     | hela      | 9     |
| 34   | 0     | hela      | 9     |
| 34   | 0     | hela      | 9     |
| 34   | 0     | hela      | 9     |
| 34   | 0     | hela      | 9     |
| 34   | 0     | hela      | 9     |
| 34   | 0     | hela      | 9     |
| 34   | 0     | hela      | 9     |
| 2    | 0     | hela      | 14    |
| 2    | 0     | hela      | 14    |
| 2    | 0     | hela      | 14    |
| 2    | 0     | hela      | 14    |
| ..   | ..    | ..        | ..    |
  • count-similar -g type计数和分组type
  • -o count设置输出计数字段;
  • sort -n countcount字段排序。

答案3

除了编写这些令人惊叹的查询之外,对 CSV 文件列进行排序的另一种方法是利用关系数据库管理系统 (RDBMS),例如阿乔

  1. 上传您的 CSV 作为资源

    您可以使用单个 CSV 或多个 CSV 上传 CSV 文件。请注意,如果您要将多个 CSV 文件上传为 MCSV,则所有列名称、列数据类型和列数都需要相同。

    如果 CSV 上传不成功,则尝试安全模式,它可以自动将所有列变成细绳数据类型。

  2. 将资源添加到项目中

    上传 CSV 后,只需将 CSV 文件添加到项目中,然后转到工作区查看表格。为了对列进行排序,您只需单击种类按钮下方列下拉列表对您需要的列进行排序。

该 GUI 易于理解和操作。

在此处输入图片描述

相关内容