[英]Combine two or more rows in a csv using powershell
我从一个客户那里收到一个文件,看起来像这样:(我在文件头中添加了标题,以便于处理)。 输入样例:
PlanID,Date,Transaction,Type,Ticker,Amount,Cash
01,121211,div,mf,fjk,25,cash
01,121211,div,mf,fjk,30,cash
01.121211,buy,mf,fjk,55,cash
02,121211,div,sd,ejd,10,cash
02,121211,div,sd,ejd,15,cash
02,121211,buy,sd,ejd,25,cash
我需要一种通过汇总每个PlanID的金额将所有行与Transaction ='div'合并的方法。 这就是我希望输出看起来像的样子:
样本输出:
PlanID,Date,Transaction,Type,Ticker,Amount,Cash
01,121211,div,mf,fjk,55,cash
01.121211,buy,mf,fjk,55,cash
02,121211,div,sd,ejd,25,cash
02,121211,buy,sd,ejd,25,cash
因此,在购买行之前只有一个div行(加总金额将始终是购买金额)。 任何想法如何解决这一点将不胜感激?
在此先感谢!
Import-Csv input.csv | Group-Object planid, transaction |
Select @{n="PlanId";E={($_.name -split ',')[0]}},
@{n="Date";e={($_.group)[0].date}},
@{n="Transaction";E={(($_.name -split ',')[1]).trim()}},
@{n="Type";e={($_.group)[0].type}},
@{n="Ticker";e={($_.group)[0].ticker}},
@{n="Amount";e={($_.group | measure-object amount -sum).sum}},
@{n="Cash";e={($_.group)[0].cash}} |
Export-Csv output.csv -NoTypeInformation
脚步:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.