¿Cómo filtrar y seleccionar columnas por nombre en Pandas?

En este tutorial, aprenderemos cómo seleccionar una o varias columnas específicas de un marco de datos de pandas por nombre o índice.

Filtrar la columna de pandas por nombre

En pocas palabras, use el método de filtro pandas para seleccionar una o varias columnas de marco de datos específicas por su nombre:

your_df.filter(items = [your_col_name], axis = 1)

Inicializar un marco de datos

Primero seguiremos adelante y crearemos algunos datos de prueba. Siéntase libre de usarlo para seguir los diferentes ejemplos de código.

dates = pd.date_range(start="10/1/23", end = '10/09/23', freq='B') expense = [448, 234, 289, 404, 286, 419] revenue = [2489, 3492, 3053, 3058, 3374, 4500]  # initialize your dataframe kpis = pd.DataFrame(dict (dates=dates, revenue = revenue, expense = expense)) kpis['margin'] = kpis['revenue'] - kpis['expense']  print(kpis.head(6))

Esto devolverá el siguiente objeto pandas DataFrame:

fechasingresosgastosmargen0

1

2

3

4

5

2023-10-02 2489 448 2041
2023-10-03 3492 234 3258
2023-10-04 3053 289 2764
2023-10-05 3058 404 2654
2023-10-06 3374 286 3088
2023-10-09 4500 419 4081

Seleccionar una columna por nombre

Como se mencionó, para filtrar una columna específica por nombre, podemos usar el método de filtro de marco de datos:

kpis.filter(items = ['revenue'], axis = 1)

Tenga en cuenta que estamos usando axis=1 para indicar que estamos interesados ​​en buscar un elemento específico en el índice de la columna. Esto devuelve el siguiente DataFrame:

ingresos0

1

2

3

4

5

2489
3492
3053
3058
3374
4500

Tenga en cuenta que esto devuelve un objeto DataFrame (a diferencia de cuando se selecciona una sola columna usando loc, iloc o usando la notación de corchetes).

Subconjunto de múltiples columnas

Si estamos interesados ​​en obtener varias columnas, pasaremos una lista al método de filtro:

kpis.filter(items = ['revenue', 'margin'], axis = 1)

Filtrar por nombre de columna que contenga / coincida con una expresión regular

También podemos seleccionar una o varias columnas cuyo nombre coincida con una expresión regular que podamos definir. Veamos dos ejemplos:

Columna cuyo nombre termina con ‘in’:

kpis.filter(regex = 'in€', axis = 1)

Esto devolverá la columna de margen:

margen0

1

2

3

4

5

2041
3258
2764
2654
3088
4081

Columnas cuyo nombre de encabezado comienza con la letra ‘e’:

kpis.filter(regex = '^e', axis = 1)

Esto devolverá la columna de gastos:

gastos0

1

2

3

4

5

448
234
289
404
286
419

Errores comunes

Cuando utilice el método de filtro para seleccionar una columna de DataFrame específica, asegúrese de especificar el eje del parámetro = 1. Si no lo hace, los pandas buscarán un nombre de elemento específico en su índice de fila de DataFrame y probablemente dará como resultado un DataFrame vacío.

Aprendizaje adicional: