按值合并2 CSV“名称”和合并计数(Powershell) [英] Merge 2 CSV by Value "Name" and merge Count (Powershell)
本文介绍了按值合并2 CSV“名称”和合并计数(Powershell)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这里是我的意思的一个例子:
CSV1
Name,Count
Klaus 3
Hans,2
Gerhard,1
Nina,6
Julia,10
Caro,19
CSV2
Name,Count
Klaus,2
Hans,1
Gerhard,1
Nina,1
结果应为:
Name,Count
Klaus,5
Hans,3
Gerhard,2
Nina,7
Julia,10
Caro,19
我试过很多,但我从来没有怀疑过;我总是有错误的结果。
解决方案
您可以使用 Group-Object
(别名 group
)将 Name
属性分组。然后你只需要总结组中每个人的 Count
属性。 测量对象
(别名 measure )将为您完成总和。
$ grouped = Import-Csv .\csv1.csv,.\csv2.csv | group Name
$ combined = $ grouped |%{
New-Object PsObject -Prop @ {Name = $ _。Name; Count =($ _。Group | measure -sum -prop Count).Sum}
}
$ combined | Export-Csv .\combined.csv -NoType
So at the momemt I'm searching for a way to merge 2 CSV files.
Here is an example for what I mean:
CSV1
"Name","Count"
"Klaus","3"
"Hans","2"
"Gerhard","1"
"Nina","6"
"Julia","10"
"Caro","19"
CSV2
"Name","Count"
"Klaus","2"
"Hans","1"
"Gerhard","1"
"Nina","1"
Now if I merge both, the output/result should be:
"Name","Count"
"Klaus","5"
"Hans","3"
"Gerhard","2"
"Nina","7"
"Julia","10"
"Caro","19"
I tried a lot, but I´ve never had suscess; I always had wrong results. Does anyone have an idea how to do this?
解决方案
You can use Group-Object
(alias group
) to group everything by the Name
property. Then you just need to sum up the Count
property of each guy in the group. Measure-Object
(alias measure
) will do sums for you.
$grouped = Import-Csv .\csv1.csv, .\csv2.csv | group Name
$combined = $grouped |%{
New-Object PsObject -Prop @{ Name = $_.Name; Count = ($_.Group | measure -sum -prop Count).Sum }
}
$combined | Export-Csv .\combined.csv -NoType
这篇关于按值合并2 CSV“名称”和合并计数(Powershell)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文