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

从DataFrame多列组合提取中位数/均值等统计数据的实现

Pandas按多变量所有组合生成统计量方案

核心高效实现(推荐)

不需要手动遍历所有组合,Pandas的groupby+agg可以直接自动处理所有18种组合,代码简洁且性能最优:

  1. 先准备符合你描述的示例数据(假设需要统计的数值列为Value):
import pandas as pd
import numpy as np

# 生成三个变量的所有组合
var1_vals = [True, False]
var2_vals = [1, 2, 3]
var3_vals = ['A', 'B', 'C']

# 构建包含所有组合的DataFrame
combinations = pd.MultiIndex.from_product([var1_vals, var2_vals, var3_vals], names=['Var1', 'Var2', 'Var3'])
df = pd.DataFrame({
    'Var1': combinations.get_level_values(0),
    'Var2': combinations.get_level_values(1),
    'Var3': combinations.get_level_values(2),
    'Value': np.random.randn(18) * 10 + 50  # 随机生成待统计的数值列
})
  1. 分组计算目标统计量:
# 按三个变量分组,一次性计算中位数、均值、计数、分位数
stats_df = df.groupby(['Var1', 'Var2', 'Var3'])['Value'].agg(
    Med='median',
    Mean='mean',
    Count='count',
    P90=lambda x: x.quantile(0.9),
    P10=lambda x: x.quantile(0.1)
).reset_index()

# 查看结果
print(stats_df)

groupby(['Var1','Var2','Var3'])会自动枚举所有18种组合的分组,agg参数直接指定每个统计量的别名和计算逻辑,一步到位生成统计结果。


手动遍历组合的实现(仅作逻辑演示)

如果你想明确遍历所有组合的逻辑,可以用三重循环枚举笛卡尔积,再逐个筛选计算,但这种方式效率低于groupby,仅作参考:

results = []
# 遍历Var1的所有唯一值
for var1 in var1_vals:
    # 遍历Var2的所有唯一值
    for var2 in var2_vals:
        # 遍历Var3的所有唯一值
        for var3 in var3_vals:
            # 筛选当前组合的子集数据
            subset = df[(df['Var1'] == var1) & (df['Var2'] == var2) & (df['Var3'] == var3)]
            # 计算统计量并存入字典
            combo_stats = {
                'Var1': var1,
                'Var2': var2,
                'Var3': var3,
                'Med': subset['Value'].median(),
                'Mean': subset['Value'].mean(),
                'Count': subset['Value'].count(),
                'P90': subset['Value'].quantile(0.9),
                'P10': subset['Value'].quantile(0.1)
            }
            results.append(combo_stats)

# 转成DataFrame
manual_stats_df = pd.DataFrame(results)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:00:07