Búsqueda de sitios web

PowerShell: cómo seleccionar los N elementos principales de cada grupo


A menudo, es posible que desee seleccionar los N elementos principales de cada grupo en un objeto en PowerShell.

Puede utilizar la siguiente sintaxis para hacerlo:

$my_data | Group-Object team | ForEach-Object {$_.group[0..2]}

Este ejemplo en particular selecciona los 3 elementos principales de cada grupo del objeto denominado $my_data, que ha sido agrupado por la propiedad team.

Esto es lo que hacen los distintos comandos:

  • Equipo de grupo-objeto: agrupa las filas en el objeto $my_data según la propiedad del equipo.
  • ForEach-Object: especifica una acción a realizar en cada grupo
  • $_: recupera la fila actual en el bucle ForEach-Object
  • grupo[0..2]: recupera elementos en las posiciones de índice 0 a 2 (es decir, los primeros 3 elementos) de la fila actual

El siguiente ejemplo muestra cómo utilizar esta sintaxis en la práctica.

Ejemplo: seleccionar los N elementos principales de cada grupo en PowerShell

Supongamos que tenemos un archivo llamado nba_data.csv que contiene información sobre varios jugadores de baloncesto.

Podemos usar la siguiente sintaxis para importar este archivo CSV a un objeto llamado $my_data:

$my_data = Import-Csv nba_data.csv

La siguiente captura de pantalla muestra cómo utilizar esta sintaxis en la práctica:

Supongamos que queremos seleccionar las 3 primeras filas de cada valor único en la columna equipo.

Podemos utilizar la siguiente sintaxis para hacerlo:

$my_data | Group-Object team | ForEach-Object {$_.group[0..2]}

La siguiente captura de pantalla muestra cómo utilizar esta sintaxis en la práctica:

Observe que esto devuelve las 3 filas superiores para cada equipo.

Para devolver un número diferente de filas para cada grupo, simplemente cambie 2 a un valor diferente.

Por ejemplo, podrías usar $_.group[0..4] para devolver las 5 primeras filas de cada grupo.

Nota: Puede encontrar la documentación completa para el cmdlet Group-Object en PowerShell aquí.

Artículos relacionados