【问题标题】:rolling sum of a column in pandas dataframe at variable intervals以可变间隔滚动熊猫数据框中的列的总和
【发布时间】:2018-11-17 11:48:13
【问题描述】:

我有一个代表 DF 索引位置的索引编号列表。 list_index = [2,7,12]

我想通过遍历 list_index 中的每个数字并对索引点之间的计数求和(并在每个索引点从 0 处重新开始计数),从 DF 中的单个列求和。这是一个小例子。

所需的输出在 OUTPUT 列中,每次从 COL 1 中再有 1 时,该列就会递增,并在 list_index 中数字之后的位置从 0 处重新开始计数。

我能够让它与循环一起工作,但 DF 中有数百万行,循环运行需要一段时间。似乎我需要一个带有总和的 lambda 函数,但我需要在索引中输入起点和终点。

类似于 lambda x:x.rolling(start_index, end_index).sum()?谁能帮我解决这个问题。

【问题讨论】:

    标签: pandas dataframe sum


    【解决方案1】:

    你可以尝试累计和只检索1个值的相关信息,不同区间的滚动和是不可能的

    a = df['col'].eq(1).cumsum()
    df['output'] = a - a.mask(df['col'].eq(1)).ffill().fillna(0).astype(int)
    

    输出:

        col output
    0   0   0
    1   1   1
    2   1   2
    3   0   0
    4   1   1
    5   1   2
    6   1   3
    7   0   0
    8   0   0
    9   0   0
    10  0   0
    11  1   1
    12  1   2
    13  0   0
    14  0   0
    15  1   1
    

    【讨论】:

      猜你喜欢
      • 2021-08-18
      • 2019-04-11
      • 2018-04-25
      • 2021-03-21
      • 1970-01-01
      • 2020-12-08
      • 2017-05-31
      • 2018-01-14
      • 2020-02-18
      相关资源
      最近更新 更多