【问题标题】:rolling windows defined by backward cumulative sums由反向累积和定义的滚动窗口
【发布时间】:2021-12-01 05:35:57
【问题描述】:

我有一个这样的熊猫数据框:

    A    B  
0   3   ...  
1   2    
2   4    
3   4    
4   1    
5   7    
6   5    
7   3    

我想计算沿 A 列的滚动,将其元素向后求和,直到至少达到 10。生成的窗口应该是:

    A    B      window_indices
0   3   ...     NA
1   2           NA
2   4           NA
3   4      -->  [3,2,1]
4   1           [4,3,2,1]
5   7           [5,4,3]
6   5           [6,5]
7   3           [7,6,5]

接下来,我想计算 B 列的一些统计信息,如下所示:

df.my_rolling(on='A', func='sum', threshold=10).B.mean()

我有一个想法:我们可以将 A 列的元素视为秒。在日期时间列中转换 A 并对其执行标准滚动。但我不知道该怎么做。

【问题讨论】:

  • 我认为这不能以矢量化的方式轻松实现。

标签: pandas rolling-computation


【解决方案1】:

这与滚动无关,因为滚动窗口不固定

l = [[df.index[(df.A.loc[:x].iloc[::-1].cumsum()>=10).idxmax():x+1].tolist()[::-1] 
             if (df.A.loc[:x].sum()>=10) else np.nan] for x in df.A.index]
                                                               
Out[46]: 
[[nan],
 [nan],
 [nan],
 [[3, 2, 1]],
 [[4, 3, 2, 1]],
 [[5, 4, 3]],
 [[6, 5]],
 [[7, 6, 5]]]

 df['new'] = l

【讨论】:

    猜你喜欢
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 2018-02-28
    • 2023-03-04
    • 2020-11-17
    • 1970-01-01
    相关资源
    最近更新 更多