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

使用Python pandas按ID分组计算各月份数值平均值的实现问题

pandas实现ID维度月度平均值统计方案

核心实现逻辑

直接使用pandas内置的pivot_table方法即可一步完成分组聚合+宽表转换的需求,不需要额外写循环逻辑,适配你150+ID、覆盖12个月的全量数据规模。

具体代码

1. 基础依赖导入&数据读取

import pandas as pd
import numpy as np

# 读入数据,这里指定ID列为字符串类型,避免001这类带前导零的ID被自动转成数值丢失前导零
df = pd.read_csv("你的数据文件路径.csv", dtype={"ID": str})

如果你的数据已经通过其他方式加载为DataFrame,可跳过读取步骤直接执行后续逻辑。

2. 生成目标结果表

result = pd.pivot_table(
    df,
    index="ID",  # 指定ID作为行索引,最终输出第一列为ID
    columns="Month",  # 指定月份作为列表头
    values="Value",  # 指定要计算平均值的数值列
    aggfunc="mean",  # 聚合规则设为求平均值
    fill_value=np.nan  # 无数据的位置填充占位符,需要填0就改成0,需要填其他值直接替换即可
)

# 可选操作:将ID从索引转为普通列
result = result.reset_index()

# 可选操作:将表头改为"X月"格式
result = result.rename(columns=lambda col: f"{col}月" if isinstance(col, int) else col)

# 可选操作:所有平均值保留两位小数
result = result.round(2)

效果验证

用你提供的样例数据执行上述代码后,ID为021的8月平均值计算结果为18926.76,和你预期的计算结果完全一致,无数据的单元格会按你设置的fill_value自动填充。

内容的提问来源于stack exchange,提问作者markovv.sim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:39:01