Pandas 按行计算月变化

Pandas Calculate Monthly Variability by Row

我正在尝试创建一个具有月度偏差(可变性)的熊猫 df,该 df 具有一组年份(1991-1993)的月度(1 月 - 12 月)平均值。我有一个 df - "data" - 这是一个 4 x 13,看起来像这样,第一列 "year" 然后是月份数据,即“01”是 Jan,等等

month  year  01  02  03  04  05  06  07  08  09  10  11  12
year                                                                      
0      1991  2   6   9   11  3   5   8   9   0   10  12  7
1      1992  3   4   1   17  5   8   9   1   2   18  19  3
2      1993  6   6   2   10  5   3   8   3   4   17  20  4

我有一个带有每月平均值的 df 让我们调用 "monthly_averages",它看起来像这样:

month  01   02   03   04   05   06   07   08   09   10   11   12 
0      3    4    5    13   4    6    8    5    2    13   14   5

我的结果应该是一个有 4 行和 13 列的 df,以便显示每年(1991、1992、1993)的偏差,其中年份列 + 每个月的列。我找到的最佳解决方案如下所示,但它只给我第一行的偏差,第一列与 NaN 其余值:(data.div(monthly_averages[['01 ']], 轴=0))-1 预先感谢您的见解。

如果我对你的描述理解正确,你可以试试这个

df_final = (data.div(monthly_averages.loc[0], axis=1) - 1).fillna(data)

Out[234]:
         01   02   03        04    05        06     07   08   09        10  \
0 -0.333333  0.5  0.8 -0.153846 -0.25 -0.166667  0.000  0.8 -1.0 -0.230769
1  0.000000  0.0 -0.8  0.307692  0.25  0.333333  0.125 -0.8  0.0  0.384615
2  1.000000  0.5 -0.6 -0.230769  0.25 -0.500000  0.000 -0.4  1.0  0.307692

         11   12    year
0 -0.142857  0.4  1991.0
1  0.357143 -0.4  1992.0
2  0.428571 -0.2  1993.0