Pandas eliminar filas con NaN
-
Pandas elimina filas con NaN usando el método
DataFrame.notna()
-
Pandas sólo elimina las filas con valores
NaN
para todas las columnas utilizando el métodoDataFrame.dropna()
-
Pandas elimina filas sólo con valores
NaN
para una columna en particular usando el métodoDataFrame.dropna()
-
Pandas elimina filas con valores
NaN
para cualquier columna usando el métodoDataFrame.dropna()
Este tutorial explica cómo podemos eliminar todas las filas con valores NaN
utilizando los métodos DataFrame.notna()
y DataFrame.dropna()
.
Utilizaremos el DataFrame en el código de ejemplo que se muestra a continuación.
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{
"Name": ["Alice", "Steven", "Neesham", "Chris", "Alice"],
"Age": [19, None, 18, 21, None],
"Income($)": [4000, 5000, None, 3500, None],
"Expense($)": [3000, 2000, 2500, 25000, None],
}
)
print(data)
Producción :
Name Age Income($) Expense($)
0 Alice 19.0 4000.0 3000.0
1 Steven NaN 5000.0 2000.0
2 Neesham 18.0 NaN 2500.0
3 Chris 21.0 3500.0 25000.0
4 Alice NaN NaN NaN
Pandas elimina filas con NaN usando el método DataFrame.notna()
El método DataFrame.notna()
devuelve un objeto booleano con el mismo número de filas y columnas que el DataFrame llamante. Si un elemento no es NaN
, se asigna al valor True
en el objeto booleano, y si un elemento es un NaN
, se asigna al valor False
.
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{
"Name": ["Alice", "Steven", "Neesham", "Chris", "Alice"],
"Age": [19, None, 18, 21, None],
"Income($)": [4000, 5000, None, 3500, None],
"Expense($)": [3000, 2000, 2500, 25000, None],
}
)
print("Initial DataFrame:")
print(data)
print("")
data = data[data["Income($)"].notna()]
print("DataFrame after removing rows with NaN value in Income Field:")
print(data)
Resultado:
Initial DataFrame:
Name Age Income($) Expense($)
0 Alice 19.0 4000.0 3000.0
1 Steven NaN 5000.0 2000.0
2 Neesham 18.0 NaN 2500.0
3 Chris 21.0 3500.0 25000.0
4 Alice NaN NaN NaN
DataFrame after removing rows with NaN value in Income Field:
Name Age Income($) Expense($)
0 Alice 19.0 4000.0 3000.0
1 Steven NaN 5000.0 2000.0
3 Chris 21.0 3500.0 25000.0
Aquí, aplicamos el método notna()
a la columna Income($)
, que devuelve un objeto serie con valores True
o False
dependiendo de los valores de la columna. Cuando pasamos el objeto booleano como índice al DataFrame original, sólo obtenemos filas sin valores NaN
para la columna Income($)
.
Pandas sólo elimina las filas con valores NaN
para todas las columnas utilizando el método DataFrame.dropna()
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{
"Id": [621, 645, 210, 345, None],
"Age": [19, None, 18, 21, None],
"Income($)": [4000, 5000, None, 3500, None],
"Expense($)": [3000, 2000, 2500, 25000, None],
}
)
print("Initial DataFrame:")
print(data)
print("")
data = data.dropna(how="all")
print("DataFrame after removing rows with NaN value in All Columns:")
print(data)
Resultado:
Initial DataFrame:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
1 645.0 NaN 5000.0 2000.0
2 210.0 18.0 NaN 2500.0
3 345.0 21.0 3500.0 25000.0
4 NaN NaN NaN NaN
DataFrame after removing rows with NaN value in All Columns:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
1 645.0 NaN 5000.0 2000.0
2 210.0 18.0 NaN 2500.0
3 345.0 21.0 3500.0 25000.0
Elimina sólo las filas con valores NaN
para todos los campos del DataFrame. Establecemos how='all'
en el método dropna()
para que el método elimine la fila sólo si todos los valores de las columnas de la fila son NaN
.
Pandas elimina filas sólo con valores NaN
para una columna en particular usando el método DataFrame.dropna()
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{
"Id": [621, 645, 210, 345, None],
"Age": [19, None, 18, 21, None],
"Income($)": [4000, 5000, None, 3500, None],
"Expense($)": [3000, 2000, 2500, 25000, None],
}
)
print("Initial DataFrame:")
print(data)
print("")
data = data.dropna(subset=["Id"])
print("DataFrame after removing rows with NaN value in Id Column:")
print(data)
Resultado:
Initial DataFrame:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
1 645.0 NaN 5000.0 2000.0
2 210.0 18.0 NaN 2500.0
3 345.0 21.0 3500.0 25000.0
4 NaN NaN NaN NaN
DataFrame after removing rows with NaN value in Id Column:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
1 645.0 NaN 5000.0 2000.0
2 210.0 18.0 NaN 2500.0
3 345.0 21.0 3500.0 25000.0
Se eliminan todas las columnas del DataFrame que tienen un valor NaN
sólo en la columna Id
.
Pandas elimina filas con valores NaN
para cualquier columna usando el método DataFrame.dropna()
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{
"Id": [621, 645, 210, 345, None],
"Age": [19, None, 18, 21, None],
"Income($)": [4000, 5000, None, 3500, None],
"Expense($)": [3000, 2000, 2500, 25000, None],
}
)
print("Initial DataFrame:")
print(data)
print("")
data = data.dropna()
print("DataFrame after removing rows with NaN value in any column:")
print(data)
Producción :
Initial DataFrame:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
1 645.0 NaN 5000.0 2000.0
2 210.0 18.0 NaN 2500.0
3 345.0 21.0 3500.0 25000.0
4 NaN NaN NaN NaN
DataFrame after removing rows with NaN value in any column:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
3 345.0 21.0 3500.0 25000.0
Por defecto, el método dropna()
eliminará todas las filas que tengan al menos un valor NaN
.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInArtículo relacionado - Pandas DataFrame Row
- Cómo obtener el recuento de filas de un Pandas DataFrame
- Cómo barajar aleatoriamente filas de DataFrame en Pandas
- Cómo filtrar filas de DataFrames en función de los valores de columna en Pandas
- Cómo iterar a través de filas de un DataFrame en Pandas
- Cómo obtener el índice de todas las filas cuya columna particular satisface la condición dada en Pandas
- Encuentre filas duplicadas en un marco de datos usando Pandas