使用powershell在csv中合并两行或多行
我从我们的一个客户那里收到一个如下的文件:(为了便于处理,我在其中添加了标题)。样本输入:使用powershell在csv中合并两行或多行,powershell,powershell-2.0,Powershell,Powershell 2.0,我从我们的一个客户那里收到一个如下的文件:(为了便于处理,我在其中添加了标题)。样本输入: 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,b
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
步骤:
在Excel中执行此操作会比在PowerShell中更简单吗?看起来不太难,我将尝试解决它;D