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

Pandas中计算DataFrame多列日均值并插入对应均值行的方法

Pandas 按日期分组插入均值行实现方案

核心逻辑分4步走,无冗余代码,复用性高:

  • 自动过滤需要计算均值的数值列,排除date、time两个非计算列
  • 按date字段分组一次性算出所有日期的数值列均值
  • 逐组拼接原始数据和符合格式要求的均值行
  • 合并所有分组得到最终结果

可直接运行的代码

假设你已经读取完成的DataFrame变量名为df:

import pandas as pd

# 筛选参与均值计算的列:排除date、time,仅保留数值类型列
calc_cols = df.select_dtypes(include=["number"]).columns.difference(["date", "time"]).tolist()

# 按date分组计算各数值列日均值,sort=False保留原表日期出现顺序
daily_avg = df.groupby("date", sort=False)[calc_cols].mean().reset_index()

output_chunks = []
# 遍历每个日期的原始分组
for current_date, group_data in df.groupby("date", sort=False):
    # 提取当前日期对应的均值
    current_avg = daily_avg[daily_avg["date"] == current_date].iloc[0].to_dict()
    # 按要求填充均值行的固定字段
    current_avg["date"] = "Average"
    current_avg["time"] = pd.NA
    # 原始分组末尾追加均值行,存入结果块
    output_chunks.append(
        pd.concat([group_data, pd.DataFrame([current_avg])], ignore_index=True)
    )

# 拼接所有块得到最终表
final_df = pd.concat(output_chunks, ignore_index=True)

常见调整说明

  • 如果需要指定均值保留的小数位数,修改计算daily_avg的行即可,比如保留2位小数就写成df.groupby("date", sort=False)[calc_cols].mean().round(2).reset_index()
  • 如果你的time列是字符串类型,把pd.NA换成空字符串""即可
  • 非数值类型的其他列(比如备注、标签类列)会在均值行自动留空,不需要额外处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:33:16