Вы можете сделать что-то вроде этого:
df=pd.DataFrame()
df['col1']=[np.nan,1,2,np.nan,3,np.nan,np.nan]
df['col2']=[np.nan,np.nan,np.nan,np.nan,1,2,3]
df['col3']=[1,2,3,4,np.nan,np.nan,np.nan]
print(df)
col1 col2 col3
0 NaN NaN 1.0
1 1.0 NaN 2.0
2 2.0 NaN 3.0
3 NaN NaN 4.0
4 3.0 1.0 NaN
5 NaN 2.0 NaN
6 NaN 3.0 NaN
df_filtered=df.loc[:,(df.notna().cumsum().shift().apply(lambda x: x.value_counts()).fillna(0)<3).all()]
print(df_filtered)
col1
0 NaN
1 1.0
2 2.0
3 NaN
4 3.0
5 NaN
6 NaN
Примечание: это устраняет, если у него есть 3 или более, чтобы устранитьиз 4 вы должны заменить 3 на 4