按长期平均值计算月变化 Pandas

Calculate Monthly Variability by Long-Term Average Pandas

我在数据框“YM”中有这样的数据,显示 2019 年第 8-12 个月的值:

     year    month  adjusted_power
343  2019    08     20754.20750
344  2019    09     20305.95125
345  2019    10     18428.88125
346  2019    11     27864.02500
347  2019    12     25405.17500

而且,我在名为“YMmonthmean”的数据框中有月平均值,看起来像这样 -

      month  adjusted_power_AVERAGE
7     08    26161.086034
8     09    20707.108319
9     10    25684.728190
10    11    29468.227759
11    12    29509.313319

我正在尝试使用 adjusted_power_AVERAGE 列计算每个“年”值的可变性,以便结果看起来像这样 -

我已经尝试了下面这个的变体,但有不同的错误。变量 YM 和 YMmonthmean 都是数据帧。感谢您的协助。

#NEED VARIABILITY BY MONTH AND YEAR
df_final = (YM.div(YMmonthmean.loc[1], axis=1) - 1)

最近的错误: 类型错误:/ 的操作数类型不受支持:'str' 和 'str'

我建议先合并两个数据框

YM = pd.DataFrame({'year': [2019, 2019, 2019, 2019, 2019],
                    'month': ['08', '09', '10', '11', '12'],
                   'adjusted_power':[20754.20750, 20305.95125, 18428.88125, 27864.02500, 25405.17500],
})
YMmonthmean = pd.DataFrame({'month': ['08', '09', '10', '11', '12'],
                   'adjusted_power_AVERAGE':[26161.086034, 20707.108319, 25684.728190, 29468.227759, 29509.313319],
})

YM = YM.merge(YMmonthmean, on = 'month', how='left')
YM['var'] = YM['adjusted_power']/ YM['adjusted_power_AVERAGE'] -1

结果

    year    month   adjusted_power  adjusted_power_AVERAGE  var
0   2019    08      20754.20750     26161.086034            -0.206676
1   2019    09      20305.95125     20707.108319            -0.019373
2   2019    10      18428.88125     25684.728190            -0.282497
3   2019    11      27864.02500     29468.227759            -0.054438
4   2019    12.     25405.17500     29509.313319            -0.139079

如果您不想在其中添加额外的列,您可以在之后删除它们