You need to enable JavaScript to run this app. Pandas如何按周聚合数据,按经纬度分组求字段均值?
优惠活动
大模型
产品
解决方案
定价
更多

Pandas如何按周聚合数据,按经纬度分组求字段均值?

报错原因分析

第一种写法报错原因

  • 未对lat、lon进行分组,直接全表重采样不符合按地理位置分组统计的需求
  • 未提前将date列转换为datetime类型,resample无法识别时间维度,触发DataError: No numeric types to aggregate报错
  • 结尾的reset_index(drop=True)会直接丢弃所有时间、分组字段,即使运行成功也无法得到目标结构

第二种写法报错原因

  • 分组参数多套了一层多余的方括号:[['lat', 'lon'], ...]会被pandas识别为一个长度为2的独立分组键,和df的行长度不匹配,触发ValueError: Grouper and axis must be same length报错
  • 分组键需要是平级列表,将所有分组维度放在同一层级即可

正确实现代码

首先先将date列转换为datetime类型,这是所有时间类操作的前提:

import pandas as pd
# 转换日期格式
df['date'] = pd.to_datetime(df['date'])
# 按lat、lon、周分组计算val平均值,freq可根据周起始规则调整,比如W-MON代表周一为周起始
res = df.groupby(['lat', 'lon', pd.Grouper(key='date', freq='W')])['val'].mean().reset_index()
# 提取目标month、week字段
res['month'] = res['date'].dt.strftime('%Y-%m')
res['week'] = res['date'].dt.isocalendar().week
# 调整列顺序得到最终结果
final_df = res[['month', 'week', 'lat', 'lon', 'val']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 13:36:01