python - 如何从该月的每一天减去该月的平均值?

标签 python pandas dataframe

我有一个 55 年的时间序列,按日计算。我找到了每年每个月的月平均值。现在我想从该月和该年的相应天数中减去该月平均值。

我的 pandas 数据框如下所示:

                 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/

相关文章:

python - 如何从peewee获取sql查询?

python - Matplotlib:将右轴的原点与特定的左轴值对齐

python - 从 csv 堆叠文件创建 pandas DataFrame

scala - 并行化/避免 Spark 中的 foreach 循环

Python Beautifulsoup Find_all 除了

Python:正确构造、写入和读取 MultiIndex pd 到 csv

python - 如何在某些条件下制作一个 numpy 数组?

python - 如何计算 'item' 列中有多少个不同的项目?

python - 根据列中的整数展开行并拆分为日期之间的月数

python - 将列表或系列作为一行 append 到 pandas DataFrame?