我在这个论坛上找到了我感兴趣的代码。 但它不能用于我的数据帧。
INPUT:
x , y ,value ,value2
1.0 , 1.0 , 12.33 , 1.23367543
2.0 , 2.0 , 11.5 , 1.1523123
4.0, 2.0 , 22.11 , 2.2112312
5.0, 5.0 , 78.13 , 7.8131239
6.0, 6.0 , 33.68 , 3.3681231
我需要删除= 1之间距离的行,并且只留下最高的一个"值"
结果得到:
1.0 , 1.0 , 12.23 , 1.23367543
4.0, 2.0 , 22.11 , 2.2112312
5.0, 5.0 , 78.13 , 7.8131239
CODE:
def dist_value_comp(row):
x_dist = abs(df['y'] - row['y']) <= 1
y_dist = abs(df['x'] - row['x']) <= 1
xy_dist = x_dist & y_dist
max_value = df.loc[xy_dist, 'value2'].max()
return row['value2'] == max_value
df['keep_row'] = df.apply(dist_value_comp, axis=1)
df.loc[df['keep_row'], ['x', 'y','value', 'value2']]
问题:
当我添加第4列value2
,其中值在点后面有更多数字时,代码只向我显示最高value2
的行,但结果应与value
相同。
更新: 当我使用旧的pycharm和python 2.7时它正在工作,在新版本上它没有,任何想法为什么?