[英]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.