熊猫按行计算每月变化

时间:2020-06-10 21:54:05

标签: pandas rows var

我正在尝试根据一组年份(1991年至1993年)的月平均值(1月至12月)创建具有月偏差(变异性)的熊猫df。我有一个df-“数据”-这是一个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']],axis = 0))-1 预先感谢您的见解。

1 个答案:

答案 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