我每天有55年的时间序列。我已经找到了每年每个月的月平均值。现在,我想从该月和该年的相应日期中减去该月均值。
我的熊猫数据框如下所示:
0 1 2 3 ... 5 6 7 8
Date ...
1951-01-01 28.361 0.0 131.24 405.39 ... 405.39 38.284 0.187010 -1.23550
1951-01-02 27.874 0.0 113.74 409.56 ... 409.56 49.834 0.066903 -1.44770
... ... ... ... ... ... ... ... ...
2005-12-16 27.921 0.0 104.99 429.78 ... 429.78 47.529 -1.814300 -5.47720
2005-12-17 27.918 0.0 112.11 425.32 ... 425.32 46.541 -3.314000 -4.02050
我计算了一年中每个月的平均值,如下所示:
0 1 2 ... 6 7 8
Date ...
1951-01-31 28.833387 0.000000 115.779677 ... 44.500613 -0.118354 -1.036190
1951-02-28 31.317429 0.000000 118.854179 ... 39.712607 0.802474 -2.443536
1951-03-31 34.550839 0.525103 86.424677 ... 43.239742 1.450830 -2.713229
... ... ... ... ... ... ...
2005-11-30 27.742767 12.357321 95.257233 ... 48.338700 -0.926430 0.250278
2005-12-31 28.171647 0.569575 106.816765 ... 43.437294 -0.998577 -1.632173
现在,我想将1951年1月的均值减去1951年1月的所有天,以此类推。
我无法考虑如何进行。
最佳答案
将GroupBy.transform
与DataFrame.sub
一起使用
#if neccesary
#df.index = pd.to_datetime(df.index)
df.sub(df.groupby([df.index.month,df.index.year]).transform('mean'))
或
Resampler.transform
df.sub(df.resample('M').transform('mean'))
关于python - 如何从该月的每一天中减去一个月的平均值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60093212/