代码之家  ›  专栏  ›  技术社区  ›  8-Bit Borges

Pandas-使用另一列的最后N个值的总和创建新列

  •  1
  • 8-Bit Borges  · 技术社区  · 4 年前

    我有这个测向仪:

           round_id          team       opponent  home_dummy   GC   GP  P
    0          1.0       Flamengo    Atlético-MG         1.0  1.0  0.0  0
    1          4.0       Flamengo         Grêmio         1.0  1.0  1.0  1
    2          5.0       Flamengo       Botafogo         1.0  1.0  1.0  1
    3          6.0       Flamengo         Santos         0.0  0.0  1.0  3
    4          7.0       Flamengo          Bahia         0.0  3.0  5.0  3
    5          8.0       Flamengo      Fortaleza         1.0  1.0  2.0  3
    6          9.0       Flamengo     Fluminense         0.0  1.0  2.0  3
    7         10.0       Flamengo          Ceará         0.0  2.0  0.0  0
    8          3.0       Flamengo       Coritiba         0.0  0.0  1.0  3
    9         11.0       Flamengo          Goiás         1.0  1.0  2.0  3
    10        13.0       Flamengo   Athlético-PR         1.0  1.0  3.0  3
    11        14.0       Flamengo          Sport         1.0  0.0  3.0  3
    12        15.0       Flamengo          Vasco         0.0  1.0  2.0  3
    13        16.0       Flamengo     Bragantino         1.0  1.0  1.0  1
    14        17.0       Flamengo    Corinthians         0.0  1.0  5.0  3
    15        18.0       Flamengo  Internacional         0.0  2.0  2.0  1
    16        19.0       Flamengo      São Paulo         1.0  4.0  1.0  0
    17        12.0       Flamengo      Palmeiras         0.0  1.0  1.0  1
    18         2.0       Flamengo    Atlético-GO         0.0  3.0  0.0  0
    19        20.0       Flamengo    Atlético-MG         0.0  4.0  0.0  0
    

         rodada_id          clube       opponent  home_dummy   GC   GP  P  last_5
    0          1.0       Flamengo    Atlético-MG         1.0  1.0  0.0  0  0
    1          4.0       Flamengo         Grêmio         1.0  1.0  1.0  1  0
    2          5.0       Flamengo       Botafogo         1.0  1.0  1.0  1  1
    3          6.0       Flamengo         Santos         0.0  0.0  1.0  3  2
    4          7.0       Flamengo          Bahia         0.0  3.0  5.0  3  5
    5          8.0       Flamengo      Fortaleza         1.0  1.0  2.0  3  8
    6          9.0       Flamengo     Fluminense         0.0  1.0  2.0  3 11
    7         10.0       Flamengo          Ceará         0.0  2.0  0.0  0 13
    8          3.0       Flamengo       Coritiba         0.0  0.0  1.0  3 12
    9         11.0       Flamengo          Goiás         1.0  1.0  2.0  3 12
    10        13.0       Flamengo   Athlético-PR         1.0  1.0  3.0  3 12
    11        14.0       Flamengo          Sport         1.0  0.0  3.0  3 12
    12        15.0       Flamengo          Vasco         0.0  1.0  2.0  3 12
    13        16.0       Flamengo     Bragantino         1.0  1.0  1.0  1 15
    14        17.0       Flamengo    Corinthians         0.0  1.0  5.0  3 13
    15        18.0       Flamengo  Internacional         0.0  2.0  2.0  1 11
    16        19.0       Flamengo      São Paulo         1.0  4.0  1.0  0  8
    17        12.0       Flamengo      Palmeiras         0.0  1.0  1.0  1  8
    18         2.0       Flamengo    Atlético-GO         0.0  3.0  0.0  0  6
    19        20.0       Flamengo    Atlético-MG         0.0  4.0  0.0  0  5
    

    请注意,在索引4(n=5)之前,总和必须是最后1、2、3、4行的总和。

    N = 5
    
    df = df.groupby(df.P // N).sum()
    

    但这行不通。

    1 回复  |  直到 4 年前
        1
  •  1
  •   BENY    4 年前

    df['Last_5'] = df.P.rolling(5,min_periods=1).sum().shift().fillna(0)
    
    Out[9]: 
    0      0.0
    1      0.0
    2      1.0
    3      2.0
    4      5.0
    5      8.0
    6     11.0
    7     13.0
    8     12.0
    9     12.0
    10    12.0
    11    12.0
    12    12.0
    13    15.0
    14    13.0
    15    13.0
    16    11.0
    17     8.0
    18     6.0
    19     5.0