Я собираюсь выйти на конечность и сказать, что это не тривиальная проблема, которую нужно решить, если вы не знаете, что такое dtypes вашего столбца.
Для решения этой проблемы я предполагаю, что в вашем DataFrame есть только строки и числовые типы.
v = df.apply(pd.to_numeric, errors='coerce').isna()
df[~((x.mean() >=.5) ^ x)].dropna()
A B C
0 abc 10 20
1 def 30 50
2 cfg 90 60
4 xyz 75 56
Идея состоит в том, чтобы отбросить строки, которые не разделяют dtype большинства ваших данных.