How to Drop Rows or Columns with missing data (NaN) in Pandas
You can drop rows or columns with missing data (e.g., with NaN) using dropna() in Pandas.
Drop rows with NaN:
df.dropna()
Drop columns with NaN:
df.dropna(axis=”columns”)
Example of dropping rows with NaN
By default, dropna() will drop rows that at least have 1 NaN. The following is an example.
import pandas as pd
import numpy as np
# Create a dataframe with NaN
df = pd.DataFrame({'Col_1': [100, np.nan, 200, np.nan, 500],
'Col_2': [np.nan, 30, 100, 88, 55],
'Col_3': [88, 87, 79, 88, 55]})
# print out the dataframe with NaN
print('Original dataframe with NaN: \n', df)
# drop rows with NaN
df_new=df.dropna()
# print out updated dataframe removed rows with NaN
print('Dataframe removed rows with NaN: \n',df_new)
The following shows the original dataframe with NaN and the updated dataframe after being removed rows with NaN.
Original dataframe with NaN:
Col_1 Col_2 Col_3
0 100.0 NaN 88
1 NaN 30.0 87
2 200.0 100.0 79
3 NaN 88.0 88
4 500.0 55.0 55
Dataframe removed rows with NaN:
Col_1 Col_2 Col_3
2 200.0 100.0 79
4 500.0 55.0 55
Example of dropping columns with NaN
You can drop columns that have at least 1 NaN by using dropna(axis='columns'). The following is the example showing that.
import pandas as pd
import numpy as np
# Create a dataframe with NaN
df = pd.DataFrame({'Col_1': [100, np.nan, 200, np.nan, 500],
'Col_2': [np.nan, 30, 100, 88, 55],
'Col_3': [88, 87, 79, 88, 55]})
# print out the dataframe with NaN
print('Original dataframe with NaN: \n', df)
# drop columns with NaN
df_new=df.dropna(axis="columns")
# print out updated dataframe removed columns with NaN
print('Dataframe removed columns with NaN: \n',df_new)
The following shows the original dataframe with NaN and the updated dataframe after being removed columns with NaN.
Original dataframe with NaN:
Col_1 Col_2 Col_3
0 100.0 NaN 88
1 NaN 30.0 87
2 200.0 100.0 79
3 NaN 88.0 88
4 500.0 55.0 55
Dataframe removed columns with NaN:
Col_3
0 88
1 87
2 79
3 88
4 55
Further Reading
The following is a tutorial showing how to drop rows or columns with NaN in Pandas.