PowerShell:如何从每组中选择前 N 个项目
通常,您可能希望从 PowerShell 中对象的每个组中选择前 N 个项目。
您可以使用以下语法来执行此操作:
$my_data | Group-Object team | ForEach-Object {$_.group[0..2]}
此特定示例从名为 $my_data 的对象的每组中选择前 3 项,该对象已按 team 属性分组。
以下是各种命令的作用:
- Group-Object team:根据 team 属性对 $my_data 对象中的行进行分组
- ForEach-Object:指定对每个组执行的操作
- $_:检索 ForEach-Object 循环中的当前行
- group[0..2]:从当前行检索索引位置 0 到 2 的项目(即前 3 个项目)
以下示例展示了如何在实践中使用此语法。
示例:在 PowerShell 中从每组中选择前 N 个项目
假设我们有一个名为 nba_data.csv 的文件,其中包含有关各个篮球运动员的信息。
我们可以使用以下语法将此 CSV 文件导入到名为 $my_data 的对象中:
$my_data = Import-Csv nba_data.csv
以下屏幕截图显示了如何在实践中使用此语法:
假设我们要从 team 列中的每个唯一值中选择前 3 行。
我们可以使用以下语法来执行此操作:
$my_data | Group-Object team | ForEach-Object {$_.group[0..2]}以下屏幕截图显示了如何在实践中使用此语法:
请注意,这会返回每个团队的前 3 行。
要为每个组返回不同的行数,只需将 2 更改为不同的值即可。
例如,您可以使用 $_.group[0..4] 返回每个组的前 5 行。
注意:您可以在此处找到 PowerShell 中 Group-Object cmdlet 的完整文档。

