Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

562
Views
Eliminar una columna de un Pandas DataFrame

Al eliminar una columna en un DataFrame, uso:

 del df['column_name']

Y esto funciona muy bien. ¿Por qué no puedo usar lo siguiente?

 del df.column_name

Dado que es posible acceder a la columna/Serie como df.column_name , esperaba que esto funcionara.

over 4 years ago · Santiago Trujillo
17 answers
Answer question

0

Otra forma de eliminar una columna en un Pandas DataFrame

Si no está buscando la eliminación en el lugar , puede crear un nuevo DataFrame especificando las columnas usando la DataFrame(...) como:

 my_dict = { 'name' : ['a','b','c','d'], 'age' : [10,20,25,22], 'designation' : ['CEO', 'VP', 'MD', 'CEO']} df = pd.DataFrame(my_dict)

Crear un nuevo DataFrame como

 newdf = pd.DataFrame(df, columns=['name', 'age'])

Obtiene un resultado tan bueno como el que obtiene con del / drop.

over 4 years ago · Santiago Trujillo Report

0

Pandas 0.21+ respuesta

La versión 0.21 de Pandas ha cambiado drop el método de colocación para incluir los parámetros de index y columns para que coincidan con la firma de los métodos de cambio de rename y reindex .

 df.drop(columns=['column_a', 'column_c'])

Personalmente, prefiero usar el parámetro de axis para indicar columnas o índices porque es el parámetro de palabra clave predominante que se usa en casi todos los métodos de pandas. Pero, ahora tiene algunas opciones adicionales en la versión 0.21.

over 4 years ago · Santiago Trujillo Report

0

La mejor manera de hacer esto en Pandas es usar drop :

 df = df.drop('column_name', 1)

donde 1 es el número de eje ( 0 para filas y 1 para columnas).

Para eliminar la columna sin tener que reasignar df , puede hacer:

 df.drop('column_name', axis=1, inplace=True)

Finalmente, para colocar por número de columna en lugar de por etiqueta de columna, intente eliminar, por ejemplo, las columnas 1, 2 y 4:

 df = df.drop(df.columns[[0, 1, 3]], axis=1) # df.columns is zero-based pd.Index

También trabajando con la sintaxis de "texto" para las columnas:

 df.drop(['column_nameA', 'column_nameB'], axis=1, inplace=True)

Nota: Introducido en v0.21.0 (27 de octubre de 2017), el método drop() acepta palabras clave de índice/columnas como alternativa a la especificación del eje.

Así que ahora podemos simplemente hacer:

 df = df.drop(columns=['column_nameA', 'column_nameB'])
over 4 years ago · Santiago Trujillo Report

0

Utilizar:

 columns = ['Col1', 'Col2', ...] df.drop(columns, inplace=True, axis=1)

Esto eliminará una o más columnas en el lugar. Tenga en cuenta que inplace=True se agregó en pandas v0.13 y no funcionará en versiones anteriores. Tendrías que asignar el resultado de nuevo en ese caso:

 df = df.drop(columns, axis=1)
over 4 years ago · Santiago Trujillo Report

0

Es una buena práctica usar siempre la notación [] . Una de las razones es que la notación de atributos ( df.column_name ) no funciona para índices numerados:

 In [1]: df = DataFrame([[1, 2, 3], [4, 5, 6]]) In [2]: df[1] Out[2]: 0 2 1 5 Name: 1 In [3]: df.1 File "<ipython-input-3-e4803c0d1066>", line 1 df.1 ^ SyntaxError: invalid syntax
over 4 years ago · Santiago Trujillo Report

0

Como habrás adivinado, la sintaxis correcta es

 del df['column_name']

Es difícil hacer que del df.column_name funcione simplemente como resultado de las limitaciones sintácticas en Python. del df[name] se traduce a df.__delitem__(name) bajo las sábanas por Python.

over 4 years ago · Santiago Trujillo Report

0

Caer por índice

Suprímanse las columnas primera, segunda y cuarta:

 df.drop(df.columns[[0,1,3]], axis=1, inplace=True)

Eliminar primera columna:

 df.drop(df.columns[[0]], axis=1, inplace=True)

Hay un parámetro inplace para que los datos originales se puedan modificar sin crear una copia.

reventado

Selección de columna, adición, eliminación

Eliminar columna column-name :

 df.pop('column-name')

Ejemplos:

 df = DataFrame.from_items([('A', [1, 2, 3]), ('B', [4, 5, 6]), ('C', [7,8, 9])], orient='index', columns=['one', 'two', 'three'])

print df :

 one two three A 1 2 3 B 4 5 6 C 7 8 9

df.drop(df.columns[[0]], axis=1, inplace=True) print df :

 two three A 2 3 B 5 6 C 8 9

three = df.pop('three') print df :

 two A 2 B 5 C 8
over 4 years ago · Santiago Trujillo Report

0

La sintaxis de puntos funciona en JavaScript, pero no en Python.

  • Python: del df['column_name']
  • JavaScript: del df['column_name'] o del df.column_name
over 4 years ago · Santiago Trujillo Report

0

Desde la versión 0.16.1, puedes hacer

 df.drop(['column_name'], axis = 1, inplace = True, errors = 'ignore')
over 4 years ago · Santiago Trujillo Report

0

Una buena adición es la capacidad de eliminar columnas solo si existen . De esta manera, puede cubrir más casos de uso, y solo eliminará las columnas existentes de las etiquetas que se le pasaron:

Simplemente agregue errors='ignore' , por ejemplo:

 df.drop(['col_name_1', 'col_name_2', ..., 'col_name_N'], inplace=True, axis=1, errors='ignore')
  • Esto es nuevo desde pandas 0.16.1 en adelante. La documentación está aquí .
over 4 years ago · Santiago Trujillo Report

0

En Pandas 0.16.1+, puede soltar columnas solo si existen según la solución publicada por eiTan LaVi . Antes de esa versión, puede lograr el mismo resultado a través de una lista de comprensión condicional:

 df.drop([col for col in ['col_name_1','col_name_2',...,'col_name_N'] if col in df], axis=1, inplace=True)
over 4 years ago · Santiago Trujillo Report

0

Visto desde un punto de vista general de Python, del obj.column_name tiene sentido si el atributo column_name se puede eliminar. Debe ser un atributo regular, o una propiedad con un eliminador definido.

Las razones por las que esto no se traduce a Pandas y no tiene sentido para Pandas Dataframes son:

  • Considere df.column_name como un "atributo virtual", no es una cosa por derecho propio, no es el "asiento" de esa columna, es solo una forma de acceder a la columna. Al igual que una propiedad sin eliminador.
over 4 years ago · Santiago Trujillo Report

0

Para eliminar columnas antes y después de columnas específicas, puede usar el método truncar . Por ejemplo:

 ABCDE 0 1 10 100 1000 10000 1 2 20 200 2000 20000 df.truncate(before='B', after='D', axis=1)

Producción:

 BCD 0 10 100 1000 1 20 200 2000
over 4 years ago · Santiago Trujillo Report

0

Utilizar:

 df.drop('columnname', axis =1, inplace = True)

O bien puedes ir con

 del df['colname']

Para eliminar varias columnas en función de los números de columna

 df.drop(df.iloc[:,1:3], axis = 1, inplace = True)

Para eliminar varias columnas en función de los nombres de las columnas

 df.drop(['col1','col2',..'coln'], axis = 1, inplace = True)
over 4 years ago · Santiago Trujillo Report

0

Si su marco de datos original df no es demasiado grande, no tiene restricciones de memoria y solo necesita mantener algunas columnas o, si no sabe de antemano los nombres de todas las columnas adicionales que no necesita, entonces también podría crear un nuevo marco de datos con solo las columnas que necesita:

 new_df = df[['spam', 'sausage']]
over 4 years ago · Santiago Trujillo Report

0

Podemos eliminar o eliminar una columna específica o columnas específicas mediante el método drop() .

Supongamos que df es un marco de datos.

Columna a eliminar = columna0

Código:

 df = df.drop(column0, axis=1)

Para eliminar varias columnas col1, col2, . . . , coln, tenemos que insertar todas las columnas que deben eliminarse en una lista. Luego elimínelos con el método drop().

Código:

 df = df.drop([col1, col2, . . . , coln], axis=1)
over 4 years ago · Santiago Trujillo Report

0

Eliminar una columna usando la función iloc de dataframe y slicing , cuando tenemos un nombre de columna típico con valores no deseados:

 df = df.iloc[:,1:] # Removing an unnamed index column

Aquí 0 es la fila predeterminada y 1 es la primera columna, por lo que :,1: es nuestro parámetro para eliminar la primera columna.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!