gpt4 book ai didi

python - 如何将欧几里德距离函数应用于 Pandas 数据框中的 groupby 对象?

转载 作者:行者123 更新时间:2023-12-04 01:33:09 25 4
gpt4 key购买 nike

随着时间的推移,我有一组对象及其位置。我想获得每个时间点的对象之间的平均距离。示例数据框如下:

time = [0, 0, 0, 1, 1, 2, 2]
x = [216, 218, 217, 280, 290, 130, 132]
y = [13, 12, 12, 110, 109, 3, 56]
car = [1, 2, 3, 1, 3, 4, 5]
df = pd.DataFrame({'time': time, 'x': x, 'y': y, 'car': car})
df

x y car
time
0 216 13 1
0 218 12 2
0 217 12 3
1 280 110 1
1 290 109 3
2 130 3 4
2 132 56 5

我想要的最终结果是:

df2
              average distance
between cars
time
0 1.55
1 10.05
2 53.04

关于如何进行的任何想法?我一直在尝试将 scipy.spatial.distance 函数应用于数据帧,但我不确定如何将其应用于 df.groupby('time'),然后获取所有这些距离的平均值。
任何帮助表示赞赏!

最佳答案

对我来说,使用 apply 或 for 循环没有太大区别

l1=[]
l2=[]

for y,x in df.groupby('time'):
v=np.triu(spatial.distance.cdist(x[['x','y']].values, x[['x','y']].values),k=0)

v = np.ma.masked_equal(v, 0)
l2.append(np.mean(v))
l1.append(y)


pd.DataFrame({'ave':l2},index=l1)

Out[250]:
ave
0 1.550094
1 10.049876
2 53.037722

关于python - 如何将欧几里德距离函数应用于 Pandas 数据框中的 groupby 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51064346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com