将pandas数据帧列中最接近的值转换为固定值



我想将一列中最接近的值(下面的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

非常感谢您的帮助!

如果值像样本数据中那样排序,请使用:

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

最新更新