¿Cómo soltar una columna de pandas si existe?

El desafío clave al automatizar su proceso de disputa de datos es manejar con gracia las posibles excepciones. Como ejemplo, como parte de la automatización, es posible que deba eliminar una o más columnas del DataFrame (siempre que existan). En este tutorial, aprenderemos cómo verificar si existen columnas en nuestro DataFrame y, de ser así, eliminarlas de nuestros datos.

Crear datos de muestra

Primero importaremos el módulo pandas e inicializaremos un DataFrame con datos de ejemplo que puede usar para seguir.

import pandas as pd  quarter = [1,2,3,4] sales = [248, 417, 387, 411]  expenses = [207, 312, 332, 299]  performance = pd.DataFrame(dict (quarter = quarter, sales = sales, expenses = expenses)) performance.head()

Aquí están nuestros datos:

gastos de ventas trimestrales0

1

2

3

1 248 207
2 417 312
3 387 332
4 411 299

Veamos el índice de la columna:

df_cols = performance.columns print(cols)

Esto devolverá:

Index(['quarter', 'sales', 'expenses'], dtype="object")

Soltar columna de pandas DataFrame

Primero definiremos una lista de columnas para soltar (una o varias). Luego recorreremos la lista y eliminaremos la columna del DataFrame si existe.

 cols_to_drop = ['margin', 'expenses']  for col in cols_to_drop :     if col in df_cols:         performance.drop(col, axis=1, inplace=True)         print(f'Column {col} dropped from DataFrame.')     else:         print(f'Column {col} doesn\'t exist in DataFrame.')

Esta será la salida:

Column margin doesn't exist in DataFrame. Column expenses dropped from DataFrame.

Eliminar una columna de pandas e ignorar errores.

Una forma algo diferente de abordar esta tarea es usar el método drop() de DataFrame con el parámetro errors=’ignore.

cols_to_drop = ['margin', 'expenses'] performance.drop(cols_to_drop, axis=1, errors="ignore")

Al ejecutar este fragmento, los pandas normalmente generarán un error ya que la columna del margen no forma parte del índice de la columna y detendrá la ejecución del código. El uso del parámetro errors = ‘ignore’ garantizará que se ignore cualquier error al soltar las columnas y que el código funcione para cualquier nombre de columna, incluidos los que no están en el DataFrame.

Eliminar una columna cuyo nombre contiene una cadena

En el siguiente ejemplo, usaremos una lista de comprensión para crear una lista de columnas para descartar qué nombre contiene una cadena. Esto suele ser útil en caso de que tenga muchas columnas sin nombre y luego importe un archivo csv, por ejemplo.

#find columns containing the string 'es cols_to_drop = [col for col in df_cols if col.find('es') > -1]  print (cols_to_drop)

Esto devolverá:

['sales', 'expenses']

Luego puede soltarlos como se muestra arriba o usando el siguiente fragmento:

performance.drop(cols_to_drop, axis=1)

Suelta una columna que contenga un valor específico

Otro caso es soltar una columna si contiene valores específicos:

cols_to_drop  = [col for col in df_cols if df[col].str.contains('your_string')]

Aprendizaje adicional

¿Cómo convertir una columna Pandas DataFrame en un tipo de datos entero?