我有一个数据框,其中包含一个名为' letter'和另一个'向量'包含对应于字母的所有相同长度的向量。 (实际数据集有很多很多列,矢量更大。)
letter vector
0 a [2.5, 4.7, 235, 46, 34]
1 a [2.5, 5, 234, 345.8, 1]
2 a [2.5, 5, 234, 432.6, 1]
3 i [4.7, 34.2, 3, 34, 700]
4 u [4.7, 123, 123, 13, 66]
5 u [4.7, 13, 375, 123, 66]
6 i [4.7, 15, 375, 23, 656]
我想依次在每个向量之间进行计算。例如,计算第0行和第1行,第1行和第2行等中向量之间的欧几里德距离。捕获的是我想要分别执行此过程3次 - 一次仅用于字母' a&# 39;向量,一次只用于字母' i'矢量等。
我可以为每个唯一字母值运行for循环:
for l in df['letter'].unique():
但我迷失了尝试通过行子集迭代计算。
答案 0 :(得分:0)
假设由2D元素组成的数据集(第一个索引是列,第二个是值),这将起作用。根据你的问题:
例如,计算第0行和第1行,第1行和第2行,第2行和第3行等的向量之间的欧几里德距离
所以,虽然这并没有加上欧几里德距离,但它确实将row0中的val0从row1添加到val0,从row0添加val1到row1中的val1等等,通过所有行添加,停在n-1列。如果您需要更具体的帮助,您必须提供更多代码上下文,变量,数据集的存储方式等。
for index in range(0, len(dataset)-1):
for sub_index in range(0, len(dataset[index])):
// Perform your logic/math/whatever here.
print(dataset[index][sub_index]+dataset[index+1][sub_index])
使用您提供的示例数据集,我不得不截断' i'按1排,因为它有6个元素,其余的有5个。
我得到了以下输出:
5.0
9.7
469
391.8
35
7.2
39
237
379.8
8
9.4
157
126
47
73
预期。