【问题标题】:How to subtract the mean of a month from each day in that month?如何从该月的每一天中减去该月的平均值?
【发布时间】:2020-05-22 09:29:49
【问题描述】:

我每天都有 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 月的所有天数,以此类推整个时间序列。

我无法考虑如何进行。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案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'))
    

    【讨论】:

    • 如何改成原系列。
    • 你的意思是df = df.sub(df.resample('M').transform('mean'))
    • 使用此 df.sub(df.resample('M').transform('mean')) 后,值与实际值不完全相同
    • 如何从整个时间序列中计算出所有一月二月等月份的平均值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    相关资源
    最近更新 更多