簡體   English   中英

從數據框中的第一行減去每一行

[英]Subtract each row from first row in 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行。

如果您想了解更多情況,我正在嘗試實現“減法聚類”算法的第二步,其公式如下:

式

其中ra = 1

可以使用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])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM