在pandas数据帧python上应用pairwise函数

2024-09-28 03:21:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,我想应用我自己的距离配对。 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'])

这将返回:

^{pr2}$

然后:

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)

索引器错误:只有整数、切片(:)、省略号(...),新轴(None)和整数或布尔数组是有效的索引


Tags: 数据距离示例df整数scipylocdistance
1条回答
网友
1楼 · 发布于 2024-09-28 03:21:54

我想我理解你的问题。您只需要计算dataframe的A列上的成对距离。在这种情况下,假设列A是两个数据帧上的第一列,那么您需要将自定义函数更改为:

def myDistance(u, v):
    return((u - v)[0])  # get the 0th index, which corresponds to column A

现在运行:

^{pr2}$

结果:

array([-1., -3., -2.])

相关问题 更多 >

    热门问题