Pandas按行计算月度变化率

问题描述 投票:0回答:1

我试图根据一组年份(1991-1993年)的月度(1-12月)平均数的df,创建一个月度偏差(可变性)的熊猫df。我有一个df--"data"--是一个4x13的数据,看起来像这样,第一列是 "年份",然后是月份数据,例如,"01 "是1月,等等。

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))-1Thank you in advance for your insight.

pandas rows var
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.