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

如何用Pandas计算排除指定标签外所有标签值的标准差?

解决方案

我们需要给DataFrame的每行计算排除当前行对应标签外,所有其他标签的val值的标准差。由于相同标签的行计算结果一致,先按标签批量计算再映射到行的方式会更高效。

步骤1:导入库并初始化DataFrame

import pandas as pd

df = pd.DataFrame({'labels' : ['A','A', 'B', 'C', 'C'],'val' : [1, 2, 3, 4, 5]})

步骤2:按标签批量计算标准差

遍历所有唯一标签,为每个标签预计算对应其他标签数据的标准差,再将结果映射到原DataFrame:

# 构建标签与对应标准差的映射字典
std_map = {}
for label in df['labels'].unique():
    # 筛选当前标签以外的所有val值
    other_vals = df.loc[df['labels'] != label, 'val']
    # 计算标准差:ddof=0为总体标准差,默认ddof=1为样本标准差,可按需调整
    std_map[label] = other_vals.std(ddof=0)

# 将结果映射到原DataFrame的新列
df['other_labels_std'] = df['labels'].map(std_map)

步骤3:查看最终结果

运行后df会新增一列other_labels_std,具体结果如下:

labelsvalother_labels_std
A10.816496580927726
A20.816496580927726
B31.5811388300841898
C40.816496580927726
C50.816496580927726

补充说明

  • 若需要计算样本标准差(分母为n-1),直接使用other_vals.std()即可,无需传入ddof=0参数。
  • 这种批量计算的方式比逐行apply效率更高,尤其在数据量较大时,每个标签仅需计算一次标准差,避免重复运算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:50:35