Используйте convert_objects
с параметром convert_numeric=True
, это приведет к принуждению любых не числовых значений к NaN
:
In [24]:
df = pd.DataFrame({'a': [0.1,0.5,'jasdh', 9.0]})
df
Out[24]:
a
0 0.1
1 0.5
2 jasdh
3 9
In [27]:
df.convert_objects(convert_numeric=True)
Out[27]:
a
0 0.1
1 0.5
2 NaN
3 9.0
In [29]:
Затем вы можете удалить их:
df.convert_objects(convert_numeric=True).dropna()
Out[29]:
a
0 0.1
1 0.5
3 9.0
UPDATE
Начиная с версии 0.17.0
этот метод теперь устарел , и вам нужно использовать to_numeric
, к сожалению это работает на Series
, а не целое df, поэтому эквивалентный код теперь:
df.apply(lambda x: pd.to_numeric(x, errors='coerce')).dropna()