我有一个.csv
文件,看起来像
ID, Dept
1,x
1,y
1,z
2,a
2,b
2,c
输出应该是
ID, Dept
1, x;y;z
2, a;b;c
我在PowerShell中尝试使用以下内容,但是两列都返回0
$csvValues = Get-Content "DeptDetails.csv"
$duplicates = $csvValues | group-object ID | ? Count -gt 1
$objs = New-Object System.Collections.ArrayList
ForEach ($duplicate in $duplicates){
$objs.Add([pscustomobject]@{ID = ($duplicate.Group.ID | select -Unique) -as [int];
GroupName=($duplicate.Group.Dept | ? Length -gt 0) -join ';'})
}
$objs | Sort ID
答案 0 :(得分:1)
使用Import-Csv
cmdlet加载csv
。使用ID
cmdlet按Group-Object
对条目进行分组。然后,您可以使用Foreach-Object
cmdlet遍历该组,并为每个ID
创建所需的对象。最后使用Export-Csv
cmdlet将其导出回csv:
Import-Csv 'DeptDetails.csv' | Group-Object ID | ForEach-Object {
[PsCustomObject]@{
ID = $_.Name
Dept = $_.Group.Dept -join ';'
}
} | Export-Csv 'DeptDetails_output.csv' -NoTypeInformation