Pandas 根据 2 列的行计算平均偏差

Pandas Calculate Average Bias By Rows from 2 Columns

我有一个如下所示的数据框,我正在尝试通过比较两列数据('obsvals' 和 'modelvals' 列)来计算简单偏差。我需要在每个月从 'modelvals' 中减去 'obsvals',然后对这些差值求和以计算第 1 个月和第 2 个月的累积偏差。我不确定如何在 python 中做到这一点。我猜想结合使用 groupby 'plant_name' 和 lambda 函数..?

这是数据框:

     plant_name  year  month  obsvals  modelvals  Bias
0     ARIZONA I  2021      1     8.90       8.30  0.60
1     ARIZONA I  2021      2     7.98       7.41  0.57
3     CAETITE I  2021      1     9.10       7.78  1.32
4     CAETITE I  2021      2     6.05       6.02  0.03 

我的最终答案应该是这样的:

     plant_name  year  Bias
0    ARIZONA I   2021   0.58
1    CAETITE I   2021   0.67

感谢您的宝贵时间,

IIUC,你需要groupby:

df = df.groupby(['plant_name','year']).agg({'Bias': np.mean}).reset_index()

输出:

  plant_name  year   Bias
0   ARIZONAI  2021  0.585
1   CAETITEI  2021  0.675