【发布时间】:2018-07-24 06:53:50
【问题描述】:
我正在尝试在 python 中运行最近邻排序。我有一个充满点的dataFrame,例如:
x y
1 10 10.0
2 26 11.0
3 27 20.0
4 36 19.0
...
最多 1000 点。我试图通过到数据帧中任何未使用点的最短距离对这些点进行排序。我目前用来进行这种排序的代码如下所示。
for j in range(0, len(data)-2):
minDist = 1000000
k = j+1
for i in range(k, len(data)-1):
#dist1 = distance.euclidean(j, i+1)
dist2 = distance.euclidean(j, i)
if(dist2<minDist):
minDist = dist2
print(minDist)
minI = data.iloc[i]
b, c = data.iloc[j+1].copy(), data.iloc[i].copy()
data.iloc[j+1],data.iloc[i] = c, b
但是,当我运行这段代码时,我的输出数据文件只移动了一个数据点,这不是正确的数据点,如下所示:
x y
1 10.0 10.0
2 624.0 436.0
3 26.0 11.0
4 27.0 20.0
我认为嵌套的 for 循环存在一些问题,但我不确定。我的 for 循环有什么错误吗?还是只是我在 Python 中处理问题的方式有问题?
【问题讨论】:
-
我建议你学习如何调试你的代码。阅读ericlippert.com/2014/03/05/how-to-debug-small-programs 了解一些很棒的入门技巧。
-
该代码应该引发
IndentationError。请修正缩进,以便我们知道您的代码的真实样子。 -
缩进错误!
-
复制后缩进错误,致歉。已修复。
标签: python pandas for-loop dataframe nested-loops