【问题标题】:Rolling sum windowed for every ID individually为每个 ID 单独加窗的滚动总和
【发布时间】:2017-12-08 00:15:37
【问题描述】:

在以下数据框中,我需要每个 ID 的最后两个“时间”周期的 X 滚动总和。

df = pd.DataFrame({'ID':[1000, 1000, 1000, 2000, 2000, 2000, 3000,3000,3000],
              'Time':[1,2,3,1,2,3,1,2,3],
              'X':[101, 201, 123, 234, 222, 333, 444, 0, 0 ]})

我尝试了以下代码,但它导致滚动总和从客户 ID '1000' 结转到 '2000' 等等。

df[['X']].rolling(2).sum()

【问题讨论】:

    标签: python python-3.x python-2.7 pandas dataframe


    【解决方案1】:

    IIUC:

    In [190]: df['new'] = df.groupby('ID', as_index=False)['X'].rolling(2).sum().reset_index(level=0, drop=True)
    
    In [191]: df
    Out[191]:
         ID  Time    X    new
    0  1000     1  101    NaN
    1  1000     2  201  302.0
    2  1000     3  123  324.0
    3  2000     1  234    NaN
    4  2000     2  222  456.0
    5  2000     3  333  555.0
    6  3000     1  444    NaN
    7  3000     2    0  444.0
    8  3000     3    0    0.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多