最近在學python 現在想利用pandas進行數據清理異常值
想說讓兩個row之間的值不要差距太大如果差太多就跟前一個相同
df內為
a b
0 1 1
1 2 2
2 3 4
3 4 9
4 5 8
5 6 5
6 7 7
7 8 8
8 9 9
9 10 10
主要的程式碼如下
data = df['b']
def new(data):
for i in range(0, 10):
row = df['b'][i]
row1 = df['b'][i + 1]
if row1 - row > 2:
return row
else:
return row1
df['new'] = df['b'].map(new)
實際輸出結果為
a b new 本來認為會有的結果
0 1 1 2 1
1 2 2 2 2
2 3 4 2 4
3 4 9 2 4
4 5 8 2 4
5 6 5 2 5
6 7 7 2 7
7 8 8 2 8
8 9 9 2 9
9 10 10 2 10
想請問各位版友是我邏輯上還是函式使用上有哪邊誤解了嗎?