You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算DataFrame行两两差的平方和及对应结果存储方案

计算客户对数值列差值平方和的实现方案

问题2:存储格式说明

你设想的三列长表格式是合理的,该格式冗余度低,支持后续灵活的筛选、排序、聚合操作,比行列都为客户名的宽矩阵格式更适合大多数数据分析场景。

问题1:实现代码

完全不需要自己写循环,用scipy的优化函数即可高效实现,即使是数千行、数十列的数据也能在秒级完成计算,代码如下:

依赖导入

import pandas as pd
from scipy.spatial.distance import pdist, squareform

核心计算逻辑

# 1. 预处理:将客户列设为索引,提取所有数值列
# 替换下方的df为你实际的DataFrame变量即可
df_num = df.set_index('Customer')

# 2. 计算所有客户对的差值平方和
# metric='sqeuclidean'直接对应你的计算逻辑:各维度差值平方求和
dist_arr = pdist(df_num, metric='sqeuclidean')

# 3. 转为你需要的长表格式
# 先转成方阵格式
dist_matrix = squareform(dist_arr)
# 转为长表
result = pd.DataFrame(
    dist_matrix,
    index=df_num.index,
    columns=df_num.index
).stack().reset_index()
# 重命名列
result.columns = ['Customer1', 'Customer2', 'Sum']
# 过滤掉自配对、重复配对(仅保留单向的客户对,避免Boby-Alan和Alan-Boby同时出现)
result = result[result['Customer1'] < result['Customer2']].reset_index(drop=True)

运行后result就是你需要的结果,和你给出的示例完全一致。

性能说明

pdist是scipy专门用于样本间距离计算的优化函数,底层为C实现,比手写Python循环性能高1~2个数量级,完全适配你的数据量级需求。


内容的提问来源于stack exchange,提问作者busman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 06:51:09