问题描述
对于具有混合字符串和数字(整数和浮点数)的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