PowerShell导入多CSV文件按Name分组汇总Wins问题求助
问题分析与解决
你的代码问题在于每个CSV文件被单独分组处理,导致输出的是每个文件内的Name分组结果,而不是把所有文件的数据合并后统一汇总同一个Name的总Wins。
修正后的代码思路是:先把所有CSV文件的数据合并到一个集合里,再对这个集合按Name分组并计算总Wins:
# 读取指定路径下的所有CSV文件并合并数据 $allData = Get-ChildItem -Path "File Path" -Filter *.csv | ForEach-Object { Import-Csv $_ } # 按Name分组并汇总所有文件的Wins总和 $allData | Group-Object Name | Select-Object Name, @{ n='TotalWins'; e={ ($_.Group | Measure-Object Wins -Sum).Sum } }
代码说明
Get-ChildItem -Filter *.csv确保只读取指定路径下的CSV文件,避免误读其他格式文件- 先通过循环将所有文件的内容导入并合并到
$allData变量,把分散在多个文件的数据整合为一个统一集合 - 对合并后的集合执行
Group-Object Name,就能跨所有文件按Name分组,再通过计算属性得到每个Name的总Wins
如果你的"File Path"本身是带通配符的路径(比如C:\stats\*.csv),还可以简化成:
Import-Csv -Path "File Path" | Group-Object Name | Select-Object Name, @{ n='TotalWins'; e={ ($_.Group | Measure-Object Wins -Sum).Sum } }
因为Import-Csv本身支持直接接收多个文件路径(包括通配符匹配的文件),会自动合并所有文件的内容。
内容的提问来源于stack exchange,提问作者RISL2023
相关产品推荐
相关产品推荐

