我试图根据一组年份(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.
如果我对您的描述理解正确的话,您可以尝试以下方法
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