在Python中对行迭代执行计算

时间:2018-03-20 21:58:59

标签: python dataframe vector

我有一个数据框,其中包含一个名为' 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():

但我迷失了尝试通过行子集迭代计算。

1 个答案:

答案 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

预期。