python borrar drop - Cómo eliminar filas de un DataFrame de pandas basado en una expresión condicional




1 Answers

Para responder directamente al título de esta pregunta (que entiendo que no es necesariamente el problema del OP, pero podría ayudar a otros usuarios a encontrar esta pregunta), una forma de hacerlo es usar el método de drop :

df = df.drop(some labels)

df = df.drop(df[<some boolean condition>].index)

Ejemplo

Para eliminar todas las filas donde la columna 'puntuación' es <50:

df = df.drop(df[df.score < 50].index)

Versión local (como se señala en los comentarios)

df.drop(df[df.score < 50].index, inplace=True)

Múltiples condiciones

(ver Indexación Booleana )

Los operadores son: | para or , & para and , y ~ para not . Estos se deben agrupar usando paréntesis.

Para eliminar todas las filas donde la columna 'puntuación' es <50 y> 20

df = df.drop(df[(df.score < 50) & (df.score > 20)].index)

delete column rows

Tengo un DataFrame de pandas y quiero eliminar filas de él donde la longitud de la cadena en una columna en particular es mayor que 2. Sé que puedo usar df.dropna() para eliminar las filas que contienen cualquier NaN , pero No veo cómo eliminar filas en función de una expresión condicional.

La respuesta a esta pregunta parece muy cercana a lo que deseo, parece que debería ser capaz de hacer algo como esto:

df[(len(df['column name']) < 2)]

pero acabo de obtener el error:

KeyError: u'no item named False'

¿Alguien puede decirme lo que estoy haciendo mal?




Related