Pandas/Python中计算DataFrame相邻行的相对曼哈顿距离
实现方案
你手上存储位置序列的DataFrame现有三列:
['Location number','x_coordinate', 'y_coordinate']
需要新增列记录当前行与上一行位置的相对距离:第一行无前序位置,距离填0;其余行按曼哈顿距离计算,规则为x方向差值加y方向差值(距离场景下默认取绝对值保证非负)。
直接用pandas内置的相邻行差值方法即可,无需手写循环,性能更好,假设你的DataFrame变量名为df,执行以下代码即可:
df['relative_distance'] = (df['x_coordinate'].diff().abs() + df['y_coordinate'].diff().abs()).fillna(0)
逻辑说明
df[列名].diff():自动计算当前行与上一行的数值差,第一行因为没有上一行数据,返回空值NaN.abs():对差值取绝对值,符合距离非负的通用逻辑;如果你的业务场景需要保留正负值体现移动方向,直接删除该方法调用即可.fillna(0):将第一行的空值填充为0,满足首行距离为0的要求
内容的提问来源于stack exchange,提问作者Cornelis
相关产品推荐
相关产品推荐

