我有一个需要两个元组的函数输入.for示例:
def mult((x1,y1),(x2,y2)):
return Eucledeandist((x1,y1),(x2,y2))
我有一个有两列(x,y)的数据框,其中x和y代表一个点的坐标。现在我需要计算数据帧中每个点到其他点的距离。 我是说如果df的长度是n。我需要一个大小为nXn的输出,其中(I,j)th entry是原始数据帧中第I个点和第j个点之间的距离。你知道吗
我怎么用数据框应用函数,而不是有两个for循环?你知道吗
生成数据帧的示例代码类似于我的代码
df = pd.DataFrame({'x':np.random.randint(10, size=6), 'y':np.random.randint(10, size=6)})
df['(x,y)']=list(zip(df.x, df.y))
数据帧应该是这样的
x y (x,y)
0 9 4 (9, 4)
1 8 6 (8, 6)
2 8 4 (8, 4)
3 1 7 (1, 7)
4 7 1 (7, 1)
5 0 5 (0, 5)
列(x,y)只是列x和y压缩在一起。我觉得这会很容易,因为函数需要元组输入。你知道吗
编辑:我很抱歉没有明确说明。我用欧几里德距离作为例子来简化我的要求。实际需求是应该使用函数来获得结果。函数所做的一切其实并不重要。你知道吗
使用来自} 和^{} :
scipy.spacial.distance
模块的^{示例
如果您坚持使用
.apply
,那么您需要像这样构造它:虽然,正如已经指出的,这是非常低效的,不建议。你知道吗
IIUC,不需要for循环或apply,它们非常慢。你知道吗
可以使用基于欧几里德距离公式的矢量化解决方案
MCVE公司
收益率
相关问题 更多 >
编程相关推荐