找到pandas.Series中的所有非数字元素

问题描述

对于具有混合字符串和数字(​​整数和浮点数)的pd.Series,我需要标识所有非数字元素。例如

data = pd.Series(['1','wrong value','2.5','-3000','>=50','not applicable','<40.5'])

我希望它返回以下元素:

wrong value
>=50
not applicable
<40.5

我目前正在做的是:

data[~data.str.replace(r'[\.\-]','').str.isnumeric()]

也就是说,由于.str.isnumeric()False赋予小数点和负号,因此我必须屏蔽“”。和“-”,然后找出非数字字段。

是否有更好的方法?还是我当前的方法有任何潜在的问题/警告?谢谢!

解决方法

使用pd.to_numeric对其进行标记

data[pd.to_numeric(data,errors='coerce').isna()]

Out[1159]:
1       wrong value
4              >=50
5    not applicable
6             <40.5
dtype: object