[問題] pandas修正數據問題已刪文

看板Python作者 (大大)時間6年前 (2018/09/02 04:42), 編輯推噓3(307)
留言10則, 2人參與, 6年前最新討論串1/2 (看更多)
最近在學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 想請問各位版友是我邏輯上還是函式使用上有哪邊誤解了嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.237.160.55 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1535834557.A.80B.html

09/02 08:18, 6年前 , 1F
可以去看看apply, map, applymap的差別
09/02 08:18, 1F

09/02 08:18, 6年前 , 2F

09/02 08:19, 6年前 , 3F
要是我的話我會新增一個column算出shift b跟原p的差別
09/02 08:19, 3F

09/02 08:19, 6年前 , 4F
然後用條件去建立新的column
09/02 08:19, 4F

09/02 08:20, 6年前 , 5F
*原b
09/02 08:20, 5F

09/02 08:26, 6年前 , 6F
我記得applymap對那個series是改每個元素,它並不知道
09/02 08:26, 6F

09/02 08:27, 6年前 , 7F
相鄰的其他元素的值。
09/02 08:27, 7F

09/03 14:42, 6年前 , 8F
只有我看不太懂想要的結果到底是怎麼出來的嗎...
09/03 14:42, 8F

09/03 14:43, 6年前 , 9F
不過這種會跟上下列有關的 可是試試看rolling
09/03 14:43, 9F

09/03 14:43, 6年前 , 10F
*可以
09/03 14:43, 10F
文章代碼(AID): #1RYlczWB (Python)
討論串 (同標題文章)
文章代碼(AID): #1RYlczWB (Python)