Cómo iterar cada fila de una columna de un DataFrame y eliminar las filas no numéricas.
Tengo este código y no puedo eliminar una fila específica del DataFrame. ¿Cómo puedo mejorar este código? Quiero eliminar los valores de esa columna que no sean numéricos. Esta forma no funciona porque hay algunas columnas faltantes que fueron eliminadas anteriormente, por lo que obtengo el siguiente error:
KeyError: ‘[1093] not found in axis’
Código:
i = 0
for row in new_dataset2.GbCity:
if isinstance(row,str):
if not(row.isdigit()):
new_dataset2.drop(i)
i+=1
davy.ai
Para mejorar el código anterior, podemos utilizar la indexación booleana para seleccionar las filas donde los valores en la columna son numéricos. Luego, podemos reasignar este DataFrame filtrado a
new_dataset_2
para sobrescribir el DataFrame original. Aquí tienes un ejemplo de código:En el código anterior,
pd.to_numeric()
se utiliza para convertir la columnaGbCity
en valores numéricos, con los valores no numéricos convertidos enNaN
. Luego usamos el métodonotnull()
para crear una máscara booleana para las filas donde los valores en la columna son numéricos. Finalmente, utilizamos esta máscara para seleccionar las filas correspondientes del DataFramenew_dataset_2
y reasignar el DataFrame filtrado anew_dataset_2
.Este código debería funcionar incluso si se eliminaron algunas columnas previamente, ya que estamos seleccionando filas basadas en una máscara booleana en lugar de índices de fila.