You need to enable JavaScript to run this app. 如何用PowerShell从CSV提取唯一列值并统计对应数量导出
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell从CSV提取唯一列值并统计对应数量导出

满足需求的PowerShell实现方案

原脚本的问题

你当前编写的脚本仅靠Select-Object -Unique筛掉重复的Category值,没有引入分组计数逻辑,自然无法同步获取每个分类对应的条目数量。

可直接运行的实现代码

常规带表头版本

这个版本导出的Summary.csv会带规范列头,方便后续程序读取,输出格式如下:

Category,Count
A,3
B,1

对应代码:

Import-Csv Products.csv -Delimiter "," |
    Group-Object -Property Category |
    Select-Object @{Name="Category";Expression={$_.Name}}, @{Name="Count";Expression={$_.Count}} |
    Export-Csv Summary.csv -Delimiter "," -NoTypeInformation

完全匹配你给出的无表头输出版本

如果你需要导出的文件和你列的预期格式完全一致,不带任何列头,可使用下面这段代码:

Import-Csv Products.csv -Delimiter "," |
    Group-Object -Property Category |
    ForEach-Object { "$($_.Name),$($_.Count)" } |
    Out-File Summary.csv -Encoding utf8

运行后生成的文件内容逐行匹配你的预期:

A,3
B,1

逻辑拆解

  • 核心替换操作是把原来的去重逻辑换成Group-Object -Property Category,这个命令会自动按Category字段把所有CSV记录归到对应分组里
  • 每个分组生成的对象本身就带两个现成的属性:Name存的是当前分组的分类值(也就是Category字段的内容),Count存的是这个分组下一共有多少条记录,完全不需要手动写循环挨个计数
  • 导出时可根据需要调整输出格式:要带规范列头方便后续程序解析,就用Export-Csv导出;要纯文本不带表头和你给出的示例格式完全匹配,就用ForEach-Object拼接字符串后输出到文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 07:15:02