powershell - 结合不同的列powershell
问题描述
我需要结合这种格式的 csv 条目:
ID, "Name", "Sex", "Age"
1, "John", "m", "24"
2, "John", "m", "28"
2, "John", "m", "30"
3, "Melissa", "f", "24"
3, "Melissa", "f", "26"
到:
ID, "Name", "Sex", "Age", "Age" ,"Age"
1, "John", "m", "24", "28", "30"
3, "Melissa", "f", "24", "26"
到目前为止我得到了什么:
$csvData = Import-Csv 'test.csv'
$csvData | Group-Object "ID" | ForEach-Object {
[PsCustomObject]@{
"ID" = $_.Name
"Sex" = $_.Group."Sex" -join '","'
"Age" = $_.Group."Age" -join '","'
}
} | Export-Csv 'test_output.csv' -NoTypeInformation
它返回给我这个:
"ID","Name", "Sex", "Age"
"1", "John", "John", "John", "m", "m", "m", "24", "28", "30"
"2", "Melissa", "Melissa", , "f", "f", "24", "26"
我该如何解决这个问题?
解决方案
如果我理解正确,那么这只是一个 PowerShell foo 中的练习,而不是有意义的数据操作。
在此前提下:创建所需输出(并最终得到有效 csv)的一种方法是为要包含在合并对象中的每个“年龄”值添加编号属性。
$csvData = Import-Csv 'test.csv'
$csvData | Group-Object Name | ForEach-Object {
$obj = [ordered]@{
ID = $_.Group[0].ID
Name = $_.Name
Sex = $_.Group[0].Sex
}
for ($i = 0; $i -lt $_.Group.Count; $i++) {
$obj["Age$($i+1)"] = $_.Group[$i].Age
}
[PsCustomObject]$obj
} | Export-Csv 'test_output.csv' -NoTypeInformation
推荐阅读
- c - 我在做这种练习时遇到了麻烦。我又来了..这个错误分段错误(核心转储)。有什么建议么?
- python - ModuleNotFoundError:没有名为“binance.client”的模块;'binance' 不是一个包
- arduino - 无法在 Ubuntu VM 中将代码上传到 Arduino Mega(计算机为 Win10)
- c++ - 如何在任意指针类型上设置魔术指针值
- twilio - 使用 Twilio Autopilot API 的任务信心问题
- moodle - Moodle:授予经理用户访问“用户个人资料字段”的权限
- php - 如何使用 Simple HTML Dom Parser 从 HTML 中删除类和 ID 属性
- docker - 重启节点后 Docker swarm 重新创建容器
- function - 将矩阵元素相乘创建一个函数并使用重复结构
- reactjs - 为什么我的 React Native useState 设置不会更新?