Или используйте pd.to_numeric
с errors='coerce'
для преобразования столбца в числовое значение и исключения нечисловых значений:
Использование @Raidex setup:
s = pd.DataFrame({'x':['p','2','3','d','f','0']})
pd.to_numeric(s['x'], errors='coerce')
Вывод:
0 NaN
1 2.0
2 3.0
3 NaN
4 NaN
5 0.0
Name: x, dtype: float64
РЕДАКТИРОВАТЬ для обработки любой ситуации.
s['x'].where(~s['x'].str.isdigit())
Вывод:
0 p
1 NaN
2 NaN
3 d
4 f
5 NaN
Name: x, dtype: object
ИЛИ
s['x'].where(s['x'].str.isdigit())
Вывод:
0 NaN
1 2
2 3
3 NaN
4 NaN
5 0
Name: x, dtype: object