【发布时间】:2017-11-06 17:20:47
【问题描述】:
我有一个这种格式的数据框:
vid points
0 1 [[0,1], [0,2, [0,3]]
1 2 [[1,2], [1,4], [1,9], [1,7]]
2 3 [[2,1], [2,3], [2,8]]
3 4 [[3,2], [3,4], [3,5],[3,6]]
每一行都是轨迹数据,我得用函数func_dist求轨迹之间的距离,像这样:
x = df.iloc[0]["points"].tolist()
y = df.iloc[3]["points"].tolist()
func_dist(x, y)
我有一个l 感兴趣轨迹的索引列表..
l = [0,1,3]
我必须找到所有可能的轨迹对之间的距离;在上述情况下,这是 0-1、0-3 和 1-3。我知道如何使用
生成对列表 pairsets = list(itertools.combinations(l, 2))
返回
[(0,1), (0,3), (1,3)]
由于该列表可能包含 100 多个索引,因此我正在尝试自动化此过程并将计算出的每对之间的距离存储在 new_df 数据框中。
我尝试了以下代码进行距离计算:
for pair in pairsets:
a, b = [m[0] for m in pairssets], [n[1] for n in pairsets]
for i in a:
x = df.iloc[i]["points"].tolist()
for j in b:
y = df.iloc[j]["points"].tolist()
dist = func_dist(x, y)
但它只计算最后一对,1-3。如何计算所有对并像这样创建一个新的数据框:
traj1 traj2 distance
0 1 some_val
0 3 some_val
1 3 some_val
【问题讨论】:
标签: python function pandas numpy dataframe