2011-12-20 32 views
0

我从我们的客户端收到一个如下所示的文件:(我为此添加了标题以便于处理)。示例输入:使用powershell在csv中组合两个或更多行

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 

我需要一种方法将所有行与Transaction ='div'相加,然后总结每个PlanID的金额。这是我希望我的输出看起来像:

样本输出:

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 

所以,只有一个格列买入前行(与总结量,将永远是买入量)。任何想法如何处理这将不胜感激?

非常感谢!

+0

在Excel中而不是在PowerShell中执行此操作会更简单吗? – Abbas 2011-12-20 19:33:26

+0

这看起来不太难,我要试着解决它,; D – mjsr 2011-12-20 20:23:31

回答

4
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 

步骤:

  1. 导入input.csv文件
  2. 集团通过planid和交易
  3. 选择你的输出你想要的属性的对象
    1. PlanId =无论在组对象名称字段中的逗号左侧是什么
    2. 事务=无论是就在由基团的对象返回的对象的名称字段中的逗号的
    3. 金额=每分组对象的所有量
    4. 日期=每分组的对象
    5. 类型=类型的时间的总和每分组的对象
    6. 定单=每分组的对象股票
    7. 现金每分组的对象=现金
  4. 导出的对象output.csv(添加notypeinformation剥离顶行机智h类型信息)
+0

我几乎在那里!你击败了我,很好的代码! – mjsr 2011-12-20 20:43:29

相关问题