【发布时间】:2020-12-21 19:37:17
【问题描述】:
我需要创建一个数据框,其中包含具有相同列的两个数据框之间的曼哈顿距离,并且我需要每个数据框的索引作为索引和列名,例如,假设我有这两个数据框:
x_train :
index a b c
11 2 5 7
23 4 2 0
312 2 2 2
x_test :
index a b c
22 1 1 1
30 2 0 0
所以列匹配但大小和索引不匹配,预期的数据框将如下所示:
dist_dataframe:
index 11 23 312
22 11 5 3
30 12 4 4
而我现在拥有的是这样的:
def manhattan_distance(a, b):
return sum(abs(e1-e2) for e1, e2 in zip(a,b))
def calc_distance(X_test,X_train):
dist_dataframe = pd.DataFrame(index=X_test.index,columns = X_train.index)
for i in X_train.index:
for j in X_test.index:
dist_dataframe.loc[i,j]=manhattan_distance(X_train.loc[[i]],X_test.loc[[j]])
return dist_dataframe
我从我拥有的代码中得到的是这个数据框:
dist_dataframe:
index
index 11 23 312
22 NaN NaN NaN
30 NaN NaN NaN
我得到了正确的数据框大小,除了它有 2 行称为索引,这是我从创建新数据框时获得的,而且无论我在曼哈顿计算行中做什么,我都会遇到错误,谁能帮帮我请在这里?
【问题讨论】: