从dataframe中的第一行中减去每一行

时间:2017-11-05 21:15:30

标签: python pandas dataframe

我有一个带有三个变量的数据帧(称为df),其头部如下所示。有600行数据。

         X1        X2        X3
0  0.049150  0.270032  0.577858
1  0.602387  0.065492  0.555747
2  0.598355  0.235002  0.482744
3  0.522151  0.253991  0.402630
4  0.402601  0.206630  0.553987

我试图从第一行中减去每一行。也就是说,我正在寻找row1 - row2,然后是row1 - row3,依此类推。我是新手使用for循环(以及一般的Python),而我目前的尝试并没有走得太远:

for i in range(len(df)):
    diff[i] = df.iloc[0,:] - df.iloc[i,:]
    diff2 = math.sqrt((diff[0])**2 + (diff[1])**2 + (diff[2])**2)
    print(diff2)

对于最后三行的上下文,我试图取每个行项之间差异的平方根。所以,

sqrt((row1col1-row2col1)^2 + (row1col2 - row2col2)^2 + (row1col3 - row2col3)^2)

然后我想在新的向量中存储所有行差异直到第600行的结果。

如果您想了解更多上下文,我正在尝试实施“减法聚类”算法的第二步,其公式如下:

formula

其中ra = 1

1 个答案:

答案 0 :(得分:2)

可以使用iloc访问第一行,如下所示:

row1 = df.iloc[0]

然后我们可以在第1行使用apply来结束:

df.iloc[1:].apply(lambda x: np.sqrt(sum((row1-x)**2)), axis=1).values

返回:

array([ 0.59025138,  0.55848   ,  0.5046703 ,  0.35988505])