如今,我面临一个问题,就是有些数据集中包含异常。例如,在一个数据集中有一个数字列。从外部可以很容易地识别出该列的最大字段是数字,但其数据类型却是对象。不仅如此,其中一些字段还包含非数字值。
例如:
一个数据集有一个”年龄“列:[23, 34, 54, 33, pp, 27, 43],其数据类型为对象。
现在,检查一下其中包含一个字符串值”pp“,这被我们称为数据集中的异常。
现在我的问题是,如何找到那些包含类似”pp“这样的异常的行。
谢谢。
回答:
你可以使用pd.to_numeric()
将非数字值的错误强制转换为NaN
,然后使用isna()
检查NaN
。接着,使用.loc
定位包含这些NaN
值(来自非数字值)的行:
df.loc[pd.to_numeric(df['Age'], errors='coerce').isna()]
示例
data = {"Age": [23, 34, 54, 33, 'pp', 27, 43] }df = pd.DataFrame(data)df.loc[pd.to_numeric(df['Age'], errors='coerce').isna()] Age4 pp