8 votos

Eliminar filas en las que la celda de una columna específica esté vacía

¿Existe alguna manera de eliminar todas las filas en QGIS en las que la celda de una columna específica en la tabla de atributos está vacía? por ejemplo, la línea tres en la tabla a continuación. Necesito hacer esto para un gran conjunto de datos con alrededor de 180,000 filas.

| ID  | 2LE  | CHECK |
|-----|------|-------|
| 1   | PT   | FALSE |
| 2   | PT   | TRUE  |
| 3   | NULL | TRUE  |
| 4   | AT   | FALSE |

0 votos

Esto podría ser más fácil fuera de QGIS. ¿En qué se encuentra almacenados los datos?

8voto

Mue Puntos 2469

Podrías usar lo siguiente en la Consola de Python. Selecciona tu capa y utiliza algo como:

capa = iface.activeLayer()
with edit(capa):
    listaIds = [feat.id() for feat in capa.getFeatures() if feat['fieldName'] == NULL]
    capa.deleteFeatures(listaIds)

7voto

PhiLho Puntos 23458

También puedes filtrar tu capa.

Haz clic derecho en la capa, elige Filtrar y usa "2LE" NO ES NULO. Después puedes hacer clic derecho y Guardar como otra capa vectorial.

5voto

PhiLho Puntos 23458

Puedes usar una capa virtual, para mantener el conjunto de datos original y crear uno nuevo.

Si no hay geometría tienes que marcar "Sin geometría" en la ventana "Crear capa virtual".

Existen diferentes formas de verificar NULL o ``. Ver también SQLite select where empty? - en Stack Overflow

Consultas de ejemplo. Estuve curioso y las probé todas con éxito (sin errores):

SELECT * FROM your_table WHERE "2LE" IS NOT NULL

>

SELECT * FROM your_table WHERE "2LE" != 'NULL'  #si `NULL` es un string:

>

SELECT * FROM your_table WHERE ifnull("2LE", '') != ''

>

SELECT * FROM your_table WHERE ifnull(length("2LE"), 0) != 0

>

SELECT * FROM your_table WHERE coalesce("2LE", '') != ''

Puedes Guardar como (clic derecho) la consulta (capa virtual) en un nuevo archivo vectorial.

5voto

Jay Bazuzi Puntos 194

En la tabla de atributos, utiliza "Seleccionar por expresión" (no Filtro) e ingresa la expresión para que coincida con las características que deseas eliminar - "2LE" IS NULL parece que funcionaría. Luego deberías tener todas esas características seleccionadas, y deberían aparecer en color amarillo.

Luego, con la edición activada (activada por el icono de lápiz en la barra de herramientas u otro lugar), presiona Ctrl-X o usa "Cortar características" en el menú "Editar". Las características seleccionadas deberían desaparecer.

Luego puedes desactivar la edición (icono de lápiz) y se te preguntará si deseas guardar los cambios, lo que sobrescribirá los datos originales en el disco o la base de datos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X