По сути, в этих пустых ячейках могут быть пробелы, табуляции или даже \n
.
Для всех этих случаев вы можете сначала strip
значения, а затем удалить строки, т.е.
df[df.B.str.strip().ne("") & df.B.notnull()]
Я считаю, что это должно охватывать все случаи.