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

Python中基于Pandas多层索引DataFrame实现逐经纬度线性回归

问题解决方法

错误原因

你使用transform方法不符合当前需求:

  • transform的设计目标是返回和分组内输入行数相同的结果,适合组内标准化、填充组均值这类场景
  • 你需要每个(lat, lon)分组返回单个斜率标量,属于分组聚合场景,应该用apply或agg方法
  • 之前逐行调用回归函数的问题,正是因为transform的机制不匹配,将单列的每个元素单独传入了回归函数

修改方案

1. (可选)优化回归函数

np.polyfit支持1维的自变量数组,不需要额外reshape:

import numpy as np
def regress(y):
    # X为年份序列的序号,y为对应气温距平
    X = np.arange(len(y))
    fit = np.polyfit(X, y, 1)
    return fit[0]

2. 正确的分组调用方式

选择tempanomaly列后按经纬度分组调用apply,再重置索引即可得到你要的输出结构:

reg = df.groupby(["lat", "lon"])["tempanomaly"].apply(regress).reset_index(name="trend")

输出的reg结构和预期完全一致:

latlontrend
-89.0-179.0-0.23604

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:06:03