按值合并2 CSV“名称”和合并计数(Powershell) [英] Merge 2 CSV by Value "Name" and merge Count (Powershell)

查看:147
本文介绍了按值合并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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆