2016-11-12 120 views
3

我想從數據集中移除異常值。爲了做到這一點,我使用的是:如何從數據框中刪除行?

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

回答

2

我覺得需要DataFrame.ix

for i in xrange(df.shape[0]): 
    print df.ix[i, 'attr'] 

或者Series.iloc

for i in xrange(df.shape[0]): 
    print df.attr.iloc[i] 

Simplier溶液Series.iteritems

for i, val in df.attr.iteritems(): 
    print (val) 
+1

我很想接受你的答案,因爲它實際上是對我的情況下,最好的解決辦法,但有人谷歌搜索這些關鍵字實際上可能需要刪除行(因爲不同的原因)所以我會接受另一個。 – MaiaVictor

+0

我有點驚訝,我認爲['布爾索引'](http://pandas.pydata.org/pandas-docs/stable/indexing.html#boolean-indexing)更好,因爲下降,但它取決於您。祝你好運 :) – jezrael

相關問題