如何计算pandas DataFrame列向量间的成对欧氏距离
Pandas 计算列两两欧氏距离方阵方案
核心逻辑
scipy的pdist方法默认计算输入矩阵行与行之间的距离,要计算DataFrame列与列的距离,只需将DataFrame转置后传入即可。
依赖导入
import pandas as pd from scipy.spatial.distance import pdist, squareform
计算代码
# 可选:先处理缺失值,避免计算错误 df = df.dropna() # 计算列两两欧氏距离 distance_array = pdist(df.T, metric="euclidean") # 转为要求格式的方阵 distance_matrix = pd.DataFrame( squareform(distance_array), index=df.columns, columns=df.columns )
结果验证
用你提供的样例数据运行后,输出的distance_matrix格式如下(数值为实际计算结果):
| x_1 | x_2 | x_3 | |
|---|---|---|---|
| x_1 | 0.000000 | 12952.081936 | 7898.373630 |
| x_2 | 12952.081936 | 0.000000 | 12394.723758 |
| x_3 | 7898.373630 | 12394.723758 | 0.000000 |
内容的提问来源于stack exchange,提问作者rbrt
相关产品推荐
相关产品推荐

