Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何找到与数据帧的其他行之间总距离最小的行_Python_Pandas_Distance - Fatal编程技术网

Python 如何找到与数据帧的其他行之间总距离最小的行

Python 如何找到与数据帧的其他行之间总距离最小的行,python,pandas,distance,Python,Pandas,Distance,我有如下的dataframe: df: Unnamed: 0 0 1 2 3 4 0 -527.0 143.0 143.0 248.0 -952.0 1 -527.0 143.0 143.0 248.0 -955.0 2 -527.0 143.0 143.0 248.0 -955.0 我使用mlpy.dtw\u std计算行之间的距离矩阵: dm = pdist ( df, lambda u,v: mlpy.dtw_std (

我有如下的
dataframe

df:


Unnamed: 0   0      1      2      3      4
0 -527.0  143.0  143.0  248.0 -952.0
1 -527.0  143.0  143.0  248.0 -955.0
2 -527.0  143.0  143.0  248.0 -955.0
我使用
mlpy.dtw\u std
计算行之间的距离矩阵:

dm = pdist ( df, lambda u,v: mlpy.dtw_std ( pd.Series ( u ).dropna ().values.tolist (),pd.Series ( v ).dropna ().values.tolist (), dist_only=True ) )
 distance_matrix=scipy.spatial.distance.squareform(dm)
如何找到与数据帧其他成员之间总距离最小的行索引(第一列(
Unnamed:0

以下是距离矩阵:

[[ 0.  3.  3.]
 [ 3.  0.  0.]
 [ 3.  0.  0.]]

您可以首先将距离矩阵转换为
numpy
数组(如果尚未转换),然后

df['dist'] = dm.mean(axis = 0)
df[df.dist == min(df.dist)]
将行平均距离保存为列,然后

df['dist'] = dm.mean(axis = 0)
df[df.dist == min(df.dist)]
将为您提供与其他人之间最小平均距离的行。要获取索引,只能选择第一列,如下所示:

df[df.dist == min(df.dist)].iloc[:,0]

一旦你得到每行的总距离,比如说你把它命名为
dist
,类似这样的东西就会做到:
df.loc[df.dist==min(df.dist)]
,但是我不能复制你的距离矩阵,我得到了以下错误:
AttributeError:“module”对象没有属性“dtw\u std”
。它来自
mlpy
库实际上,如果您共享
dm
的外观,它将非常有帮助。这样我就不必重新计算它了。不需要计算距离矩阵,如果我有一行具有最小值,我只需要一行作为答案,我已经添加了距离矩阵值,那该怎么办