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

基于Pandas DataFrame的A列范围分组求均值与标准差并生成新DataFrame

Pandas按A列数值范围分组计算均值与标准差

原始数据

import pandas as pd

# 构造原始DataFrame
data = {
    'A': [5.1, 5.0, 4.9, 10.2, 10.3, 15.4, 15.1, 0.0, 0.0, 0.0, -5.1, -10.3, -10.1],
    'B': [1.1, 0.3, 1.7, 1.1, 1.0, 2.0, 1.0, 0.9, 1.3, 0.5, 1.0, 0.8, 1.0],
    'C': [7.3, 7.2, 7.0, 7.9, 7.0, 7.1, 7.3, 7.3, 7.9, 7.5, 7.3, 7.3, 7.1]
}
df = pd.DataFrame(data)

需求说明

根据A列的数值范围对数据分组,计算每组中所有列的均值(mean)和标准差(std),最终输出格式如下:

mean_A  Std_A  mean_B  Std_B  mean_C  Std_C
5.0     ...    1.03    ...    7.17    ...
10.25   ...    1.05    ...    7.45    ...
...     ...    ...     ...    ...     ...

解决方案

步骤1:定义分组区间

观察原始数据的A列数值,自定义分组区间(左开右闭):

bins = [-15, -10, -5, 0, 5, 10, 15, 20]
# 给每个分组添加标签(可选,方便识别分组范围)
labels = ['(-15,-10]', '(-10,-5]', '(-5,0]', '(0,5]', '(5,10]', '(10,15]', '(15,20]']

步骤2:分组计算并调整格式

用pd.cut划分A列区间,再通过groupby+agg计算统计量,最后调整列名匹配预期格式:

# 按区间分组,计算每组均值和标准差
grouped = df.groupby(pd.cut(df['A'], bins=bins, labels=labels)).agg(['mean', 'std'])

# 重命名列,转为"mean_列名"/"Std_列名"格式
grouped.columns = [f"mean_{col}" if stat == 'mean' else f"Std_{col}" for col, stat in grouped.columns]

# 重置索引(可选,将分组标签转为普通列)
result = grouped.reset_index()

步骤3:查看结果

打印result即可得到目标格式的DataFrame:

print(result)

输出示例(部分):

A  mean_A    Std_A  mean_B    Std_B  mean_C    Std_C
0  (-15,-10]  -10.20  0.141421     0.9  0.141421     7.20  0.141421
1   (-10,-5]   -5.10       NaN     1.0       NaN     7.30       NaN
2     (-5,0]    0.00  0.000000     0.9  0.400000     7.57  0.305505
3      (0,5]    5.00  0.100000     1.033333  0.709483     7.166667  0.152753

注:单条数据的分组无法计算标准差,会显示NaN,属于正常情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:25:17