按默认值删除行

时间:2017-09-04 19:08:42

标签: python pandas dataframe

我在这个论坛上找到了我感兴趣的代码。 但它不能用于我的数据帧。

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时它正在工作,在新版本上它没有,任何想法为什么?

0 个答案:

没有答案
相关问题