I receive a file from one of our clients that looks like this: (I added headers to this to it for easier processing). Sample Input:
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
I need a way to combine all the rows with Transaction= 'div' by summing up their amount for each PlanID. This is how I desire my output to look like:
Sample Output:
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
So, there is only one div row before buy row (with amount summed up, will always be the buy amount). Any ideas how to approach this would be greatly appreciated?
Thanks much in advance!!
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
Steps:
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.