我正在尝试对包含 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 count
按count
字段排序。
答案3
除了编写这些令人惊叹的查询之外,对 CSV 文件列进行排序的另一种方法是利用关系数据库管理系统 (RDBMS),例如阿乔。
上传您的 CSV 作为资源
您可以使用单个 CSV 或多个 CSV 上传 CSV 文件。请注意,如果您要将多个 CSV 文件上传为 MCSV,则所有列名称、列数据类型和列数都需要相同。
如果 CSV 上传不成功,则尝试安全模式,它可以自动将所有列变成细绳数据类型。
将资源添加到项目中
上传 CSV 后,只需将 CSV 文件添加到项目中,然后转到工作区查看表格。为了对列进行排序,您只需单击种类按钮下方列下拉列表对您需要的列进行排序。
该 GUI 易于理解和操作。