繁体   English   中英

使用PowerShell转置CSV文件

[英]Transposing a CSV file using PowerShell

我有一个CSV文件,它具有固定的列数(带标题)和动态的行数,我需要将其转换为另一个CSV,该CSV文件具有静态的行数和动态的列数(带或不带标题)。

这是一个电子表格前后的示例。 请记住,顶部将代表我的输入数据,底部是所需的状态。

CSV电子表格数据

当然,这是一个很小的子集,因为我可以有一个拥有50个组的用户和一个只有1个与之相关联的用户。 这使我不必事先知道列数,因此它必须是动态的。

我已经尝试使用在这篇博文中找到的内容,但是在尝试修改代码以适应我的需求时遇到了问题。 我能够做的最接近的操作是为每个唯一的用户ID创建一行,但是与其在每个用户旁边的列中没有对应的组名,而是将它们设置为标题,而不为用户设置任何值。

意外的当前结果

如果您不需要标题或已定义的列,则可以简单地从数组的哈希表中收集第二列的值,在该哈希表中,您可以使用第一列的值作为键:

$data = @{}
Import-Csv 'C:\path\to\input.csv' | ForEach-Object {
    $data[$_.UserID] += @($_.GroupName)
}

然后,您可以将数据导出到文本文件,如下所示:

$data.Keys | ForEach-Object {
    $_ + ',' + ($data[$_] -join ',')
} | Set-Content 'C:\path\to\output.txt'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM