我想將一列的最接近值(下面的 col2)轉換為相同的值(比如最大的值)。假設以下資料框:
df = pd.DataFrame({"col1":[0,1,2,3,4,5,6],"col2":[1,5,6,10,12,14,17]})
col1 col2
0 0 1
1 1 5
2 2 6
3 3 10
4 4 12
5 5 14
6 6 17
給定列 col2 和 2 的接近度閾值:5 和 6 的差異小于閾值,因此兩者將相同,即 6。值 1 和 17 與 col2 中的其余值相距甚遠,因此那里沒有變化。10、12 和 14 之間的差異小于 2,因此將它們全部更改為 14。(為什么我需要這個程序:使用 pytesseract.image_to_data 將影像轉換為文本時,文本的頂部坐標略有不同,我想修復這些坐標并使它們具有相同的值。)
給定 col2 和接近閾值 2 的最終輸出將是:
col1 col2
0 0 1
1 1 6
2 2 6
3 3 14
4 4 14
5 5 14
6 6 17
非常感謝您的幫助!
uj5u.com熱心網友回復:
如果值按照示例資料進行排序,請使用:
df['col2'] = df['col2'].mask(df['col2'].diff(-1).abs().le(2)).bfill()
print (df)
col1 col2
0 0 1.0
1 1 6.0
2 2 6.0
3 3 14.0
4 4 14.0
5 5 14.0
6 6 17.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/358437.html
