我正在尝试从数据集中删除异常值.为了做到这一点,我正在使用:
df = df[df.attr < df.attr.mean() + df.attr.std()*3]
这似乎按预期工作,但是,当我做类似的事情时:
for i in xrange(df.shape[0]):
print df.attr[i]
然后我得到一个KeyError.似乎Pandas实际上并没有返回删除行的新DataFrame.我实际上如何删除这些行,并获得功能齐全的DataFrame?
解决方法:
首先,找到符合条件的索引(在您的情况下为df.attr< df.attr.mean()df.attr.std()* 3).
x = df.loc[:,attr] < df.attr.mean() + df.attr.std()*3
接下来,使用DataFrame.drop.
df.drop(x[x].index)
有关更多信息,请参见答案,例如How to drop a list of rows from Pandas dataframe?