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

使用Pandas按mes与estacao分组计算月度城市平均温度出错求助

解决Pandas按月份+城市分组计算月均温并赋值新列的问题

问题分析

你当前的代码存在两个核心问题:

  1. 分组列的索引方式错误:df2['mes', 'estacao']这种写法仅适用于**多级列名(MultiIndex)**的场景,而你的数据集列名是普通字符串,应该用列表形式指定分组列。
  2. 直接赋值分组均值会导致索引对齐失败:groupby(...).mean()返回的是分组后的聚合结果(行数远少于原DataFrame),直接赋值给新列会因为索引不匹配,造成大量NaN或者数据错位。

正确实现代码

# 按月份(mes)和城市(estacao)分组,用transform广播均值到每一行
df2['avg_temp_ar_mensal'] = df2.groupby(['mes', 'estacao'])['temp_ar'].transform('mean')

代码说明

  • groupby(['mes', 'estacao']):明确指定按mes和estacao两个维度分组,确保每个城市每个月的均值独立计算。
  • transform('mean'):将分组计算出的均值,填充到该分组对应的每一行中,保持原DataFrame的行数和索引完全对齐,避免赋值时的索引错位问题。

对比错误写法的问题

  • 错误写法1:df2['temp_ar'].groupby(df2['mes', 'estacao']).mean()
    这里的df2['mes', 'estacao']会被解析为尝试获取列名为('mes', 'estacao')的列,而你的数据集里没有这个列,因此直接报错。
  • 错误写法2:df2['temp_ar'].groupby(df2['mes']).mean()
    仅按月份分组,会把所有城市的气温数据混在一起计算月均值,无法区分不同城市,导致结果不符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:50:31