微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据列的内容合并 .CSV 行 - 对另一列求和 编辑:

如何解决根据列的内容合并 .CSV 行 - 对另一列求和 编辑:

我已经成功地从多个文件中导出了一些数据,并在 PowerShell 中使用 Export-Csv 命令创建了一个 .csv。我当前的 .csv 文件现在看起来像这样:

CA;ArtNr;Menge;CD;CE;CF;CG;CH
RN;42450;7;H;10200;some Text;another column;more text
RN;72250;2;H;10200;some Text;another column;more text
RN;42450;3;H;10200;some Text;another column;more text
RN;72250;2;H;10200;some Text;another column;more text
RN;42450;3;H;10200;some Text;another column;more text

现在在最后一步中,我想合并列 CB 中具有相同值的所有行,并总结它们的 CC 值。 所以我想要的结果是:

CA;ArtNr;Menge;CD;CE;CF;CG;CH
RN;42450;13;H;10200;some Text;another column;more text
RN;72250;4;H;10200;some Text;another column;more text

有人可以帮助我吗(以 PowerShell 新手友好的方式)?

先谢谢你!

编辑 如果我将您的代码调整为脚本以将其添加为下一步,它只会给我一个空的 .csv 文件

$csv = "X:\folder\file.name.csv" | ConvertFrom-Csv -Delimiter ';'
$csv | group-object ArtNr | ForEach-Object {
    $_.Group[0].Menge = ($_.Group.Menge | Measure-Object -Sum).Sum
    $_.Group[0]
}
$csv | Export-Csv -Path "x:\folder\file.name.new.csv" -Delimiter ";" -NoTypeinformation

我做错了什么?

解决方法

这是您可以做到的一种方法。这将采用每个组的第一个值,但是,正如在我的评论中,如果每个组(不包括 CB 和 CC)的每个项目的值不同,您需要指定如何处理那个。

$csv = @'
CA;CB;CC;CD;CE;CF;CG;CH
RN;42450;7;H;10200;some Text;another column;more text
RN;72250;2;H;10200;some Text;another column;more text
RN;42450;3;H;10200;some Text;another column;more text
RN;72250;2;H;10200;some Text;another column;more text
RN;42450;3;H;10200;some Text;another column;more text
'@ | ConvertFrom-Csv -Delimiter ';'

$csv | Group-Object CB | ForEach-Object {
    $_.Group[0].CC = ($_.Group.CC | Measure-Object -Sum).Sum
    $_.Group[0]
} | Export-Csv -Path "x:\folder\file.name.new.csv" -Delimiter ";" -NoTypeInformation

结果如下:

CA CB    CC CD CE    CF        CG             CH
-- --    -- -- --    --        --             --
RN 42450 13 H  10200 some Text another column more text
RN 72250  4 H  10200 some Text another column more text

编辑:

如果您从 CSV 文件导入数据,它看起来像这样:

$csv = Import-Csv "X:\path\to\file.csv" -Delimiter ';'

$csv | Group-Object CB | ForEach-Object {
    $_.Group[0].CC = ($_.Group.CC | Measure-Object -Sum).Sum
    $_.Group[0]
} | Export-Csv -Path "x:\folder\file.name.new.csv" -Delimiter ";" -NoTypeInformation

或者您可以直接通过管道将导入导入脚本,如下所示:

Import-Csv "X:\path\to\file.csv" -Delimiter ';' | Group-Object CB |
ForEach-Object {
    $_.Group[0].CC = ($_.Group.CC | Measure-Object -Sum).Sum
    $_.Group[0]
} | Export-Csv -Path "x:\folder\file.name.new.csv" -Delimiter ";" -NoTypeInformation

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?