Использовать errors
параметр:
df = pd.DataFrame({'B':['a',7, 8], 'C':[7,8,9]})
df.apply(pd.to_numeric, errors='coerce')
Выход:
B C
0 NaN 7
1 7.0 8
2 8.0 9
Примечание: Pandas преобразует любой столбец числового dtype со значением NaN в значение с плавающей точкой.