我有一个数据框,我想成对应用我自己的距离。myDistance 需要 2 个数据帧并使用 skelarn pairwise_distance 或 scipy pdist 转换的问题是 ndarray。例子:
df = pd.DataFrame([[1,2,3,3],[2,3,3,4],[4,1,3,2]],columns=['A','B','C','D'])
这将返回:
A B C D
0 1 2 3 3
1 2 3 3 4
2 4 1 3 2
然后:
def myDistance(f1,f2):
return f1['A']-f2['A']
myDistance(df.loc[0],df.loc[1])
这有效并返回-1。
但这不是,因为 pdist 将 df 行视为 ndarray
from scipy.spatial.distance import pdist
dist = pdist(df,myDistance)
IndexError:只有整数、切片 ( :
)、省略号 ( ...
)、numpy.newaxis ( None
) 和整数或布尔数组是有效的索引