# drop duplicate rows having the least null values # (assuming 'col_1' is the column from which you want to remove the duplicates) new_df = df.sort_values(by=list(df.columns), na_position='last').drop_duplicates('col_1', keep='first')