Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

309
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda