我每天有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.transformDataFrame.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/

10-12 20:26