【发布时间】:2016-02-06 20:46:06
【问题描述】:
我正在尝试测量熊猫数据框中点之间的距离。我首先希望测量子区域中的点之间的距离并获得该组的平均距离。然后我想测量子区域之间的距离(测量这两个向量之间的距离)。我了解如何进行测量部分(前者使用scipy.spatial.distance.euclidean,后者使用scipy.spatial.distance.cdist)。我遇到的问题是弄清楚如何将函数应用于数据集。我认为我应该使用 groupby.apply() 并输入我的函数,但我在概念化它时遇到了麻烦。数据框如下所示:
id, latitude, longitude, subregion, region
目前我有:
import pandas as pd
import numpy as np
from scipy.spatial.distance import euclidean
df = pd.read_csv('targets.csv')
...
def calculate_distance(x,y):
return x._get_numeric_data().apply(axis=0, func=euclidean[x,y]).mean()
df.groupby('subregion').apply(calculate_distance)
我知道这是不正确的,因为我想将所有行应用于多个列。我的另一个想法是我为此使用了错误的数据结构。
【问题讨论】:
标签: python pandas scipy euclidean-distance