You need to enable JavaScript to run this app. Pandas中利用pivot_tables同步实现分组计数与列平均值计算
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中利用pivot_tables同步实现分组计数与列平均值计算

Pandas 分组聚合实现双统计维度的具体方案

基于你已熟悉的pivot_table流程改造

你之前通过pivot_table按column2提取唯一值分组的操作,只需要在聚合环节补充column3的均值计算规则,无需额外拆分两次聚合,就能一步生成符合要求的最终结果。核心实现代码:

import pandas as pd

# 对应示例的初始DataFrame结构
df = pd.DataFrame({
    "column1": [123, 335, 456, 324, 232],
    "column2": ["-6.23,101.45", "-6.23,101.45", "-6.23,101.45", "-6.12,102.33", "-6.12,102.33"],
    "column3": [3, 4, 5, 10, 6]
})

# 对齐你之前的pivot_table使用习惯,仅补充聚合规则
agg_result = pd.pivot_table(
    df,
    index="column2",  # 和你之前提取column2唯一值的分组逻辑完全一致
    values="column3",
    aggfunc=["count", "mean"],  # 同步指定两个聚合动作:统计条目数、计算column3均值
).reset_index()

# 对齐示例输出的列名格式
agg_result.columns = ["column2", "count", "avg_column3"]

上述代码运行后输出的结果和你给出的预期示例完全匹配:

  • 分组-6.23,101.45的条目数为3,column3平均值为(3+4+5)/3=4
  • 分组-6.12,102.33的条目数为2,column3平均值为(10+6)/2=8

实用提示

  • 如果column2存在空值需要纳入分组统计,只需要在pivot_table调用中补充参数dropna=False,即可保留空值对应的分组条目
  • 如果需要过滤聚合结果(比如只保留条目数大于1的分组),可以在生成的agg_result基础上直接加条件筛选即可,和普通DataFrame的操作逻辑完全一致

轻量化替代方案(无需透视表逻辑)

如果不需要用到pivot_table的特殊透视能力,直接用分组聚合的命名写法可以更简洁地实现相同效果,且无需后续手动调整列名:

agg_result = df.groupby("column2", as_index=False).agg(
    count=("column3", "count"),
    avg_column3=("column3", "mean")
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.11 18:24:05