【发布时间】:2021-12-11 02:13:30
【问题描述】:
我正在尝试对年温度随时间进行回归,并获得每个纬度和经度坐标的斜率/线性趋势(回归生成的数字)(完整数据集有许多纬度/经度位置)。我想用这个斜率值替换每个位置的年份和温度。我的最终目标是用 cartopy 绘制这些趋势。
这是 pandas 多索引数据帧中的一些测试数据
tempanomaly
lat lon time_bnds
-89.0 -179.0 1957 0.606364
1958 0.495000
1959 0.134286
这是我的目标:
lat lon trend
-89.0 -179.0 -0.23604
这是我的回归函数
def regress(y):
#X is the year or index, y is the temperature
X=np.array(range(len(y))).reshape(len(y),1)
y = y.array
fit = np.polyfit(X, y, 1)
return (fit[0])
这就是我试图称呼它的方式
reg = df.groupby(["lat", "lon"]).transform(regress)
我收到的错误是TypeError: Transform function invalid for data types。
在调试过程中,我发现每行都运行回归(3次,使用测试数据),而不是每个位置一次(测试数据中只有一个位置)。我相信问题出在我用来调用回归的方法上,但无法找到另一种方法来迭代并按纬度/经度对执行回归——感谢任何帮助!
【问题讨论】:
标签: python pandas dataframe regression pandas-groupby