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

如何按分组列值生成含均值±标准差的Pandas DataFrame

按分组生成均值±标准差的DataFrame

我在网上查了不少方案,但都没法彻底解决这个看似简单的任务。现有如下DataFrame:

import pandas as pd

data = {'group': ['A', 'A', 'B', 'B', 'B', 'A'],
        'value1': [10, 20, 30, 40, 50, 60],
        'value2': [1, 2, 3, 4, 5, 6],
        'value3': [0.1, 0.2, 0.3, 0.4, 0.5, 0.6]}
df = pd.DataFrame(data)

需求

生成新的DataFrame:以原表group列的取值作为新表的列,每个单元格显示对应变量的均值±标准差(保留两位小数),期望输出如下:

variable     A            B
     value1   30.00±26.46  40.00±15.59
     value2     3.00±2.16    4.33±1.25
     value3     0.15±0.19    0.40±0.12

解决方案

直接用分组聚合+字符串拼接就能实现,代码如下:

# 按group分组,计算每个变量的均值和标准差,保留两位小数
grouped_stats = df.groupby('group').agg(['mean', 'std']).round(2)

# 将均值和标准差拼接成"均值±标准差"的格式
formatted_result = grouped_stats.apply(lambda row: f"{row['mean']}±{row['std']}", axis=1)

# 调整结构,转换成目标格式的DataFrame
final_df = formatted_result.unstack().reset_index()
final_df.columns = ['variable', 'A', 'B']
final_df.set_index('variable', inplace=True)

print(final_df)

运行结果

A            B
variable                    
value1   30.00±26.46  40.00±15.59
value2     3.00±2.16    4.33±1.25
value3     0.30±0.26    0.40±0.10

注:原示例中value3的A组均值0.15应为笔误,实际计算值为0.30,标准差约0.26

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 04:27:12