【发布时间】:2021-09-28 18:07:12
【问题描述】:
我有一个如下所示的数据框:
data = pd.DataFrame({'id':[1,1,1,2,2,2,3,3,3],
'age':[20, 21,18,54,23,11, 19, 18,12],
'experience':[5,4,3,8,2,11,2,8,6]},columns=['id','age','experience'])
id age experience
0 1 20 5
1 1 21 4
2 1 18 3
3 2 54 8
4 2 23 2
5 2 11 11
6 3 19 2
7 3 18 8
8 3 12 6
我正在使用一个名为 dtw_path 的自定义距离函数来计算元组之间的距离。我不会详细讨论该函数如何将距离计算为一个复杂的过程,但它只是输出元组之间的标量距离值。
元组的形成方式如下:
data['age_exp'] = data[['age', 'experience']].apply(tuple, axis=1)
id age experience age_exp
0 1 20 5 (20, 5)
1 1 21 4 (21, 4)
2 1 18 3 (18, 3)
3 2 54 8 (54, 8)
4 2 23 2 (23, 2)
5 2 11 11 (11, 11)
6 3 19 2 (19, 2)
7 3 18 8 (18, 8)
8 3 12 6 (12, 6)
所以对于上述数据框,如果我需要计算 id 1 和 id 2 之间的距离,我会按如下方式计算距离:
data1 = data[data['id']==1]
data1 = np.array(data1['age_exp'].tolist())
data1
array([[20, 5],
[21, 4],
[18, 3]])
data2 = data[data['id']==2]
data2 = np.array(data2['age_exp'].tolist())
data2
array([[54, 8],
[23, 2],
[11, 11]])
dtw_path(data1,data2)[1]
1.5
我需要帮助的是如何遍历数据框并为 id 列创建距离矩阵,即类似这样的东西
1 2 3
1 0 1.5 2
2 1.5 0 2.3
3 2 2.3 0
【问题讨论】:
-
dtw_path到底是什么?
标签: python pandas numpy matrix distance