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

如何按Object类型列分组计算Pandas DataFrame数值列的标准差

按continent分组计算数值列标准差的解决方法

首先是你的DataFrame初始化代码:

import pandas as pd

data = {
    'country_code': ['AFG', 'AGO', 'ALB', 'ARE', 'ARG'],
    'country_name': ['Afghanistan', 'Angola', 'Albania', 'United Arab Emirates', 'Argentina'],
    'continent': ['Asia', 'Africa', 'Europe', 'Asia', 'South America'],
    2010: [11.35, 9.43, 14.09, 2.48, 7.71],
    2011: [11.05, 7.36, 13.48, 2.30, 7.18],
    2012: [11.34, 7.35, 13.38, 2.18, 7.22],
    2013: [11.19, 7.37, 15.87, 2.04, 7.10],
    2014: [11.14, 7.37, 18.05, 1.91, 7.27]
}

df = pd.DataFrame(data)

你之前的代码报错,是因为df.select_dtypes('number')会过滤掉所有非数值列(包括continent),导致分组时找不到该列。以下是三种可行的解决方法:

方法一:先分组再筛选数值列

先按continent完成分组,再对每组筛选数值列并计算标准差:

df.groupby('continent').select_dtypes('number').std()

方法二:保留continent列后再筛选

先将continent列和所有数值列组合成新的数据集,再执行分组计算:

# 拼接目标列列表:continent + 所有数值列
target_cols = ['continent'] + df.select_dtypes('number').columns.tolist()
df[target_cols].groupby('continent').std()

方法三:使用agg指定列计算标准差

通过字典明确指定需要计算标准差的数值列,再进行分组聚合:

# 生成数值列与std方法的映射字典
std_dict = {col: 'std' for col in df.select_dtypes('number').columns}
df.groupby('continent').agg(std_dict)

内容的提问来源于stack exchange,提问作者M.Shaker Nayyal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:57:49