网站搜索

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 的完整文档。

相关文章