我正在寻找创建一个函数来计算选定类别与数据集中所有其他类别之间的曼哈顿距离。然后,该函数应返回与所选距离最小的 CATEGORY。
df = pd.DataFrame(np.random.randint(0,100, size= (10,4)), columns=list('ABCD'))
df['category']= ['apple','orange','grape','berry','strawberry','banana','kiwi','lemon','lime','pear']
下面的代码返回最小的 4 个距离,其中包括所选类别(距离 = 0;这是多余的,不需要)。我需要代码只返回最低的 3 个距离作为类别列表,第一个是最小的。
def distance(row):
cols = list('ABCD')
return (df[cols] - row[cols]).abs().sum(axis=1)
df.set_index('category', inplace=True)
dist = df.apply(distance, axis=1)
dist['apple'].nsmallest(4)
例如,如果选择了“Apple”,并且离苹果最近的三个距离是 Berry、Orange 和 Grape,则返回应该是这样的:["Berry", "Orange","Grape"]
LEATH
相关分类