Вы можете посчитать (не NaN) значение по подмножеству столбцов:
df[df[['B', 'C', 'D']].count(axis=1) > 0]
Это дает, как и ожидалось:
A B C D
0 20 NaN 2.0 NaN
1 3 1.0 NaN 2.0
2 44 4.0 NaN NaN
4 52 3.0 2.0 NaN
и фокусируется только на требуемых столбцах