如果我有以下数据框,可以这样派生: df = pd.DataFrame(np.random.randint(0, 10, size=(10, 1)))
0
0 0
1 2
2 8
3 1
4 0
5 0
6 7
7 0
8 2
9 2
有没有一种有效的方式cumsum行有限制,每次达到这个限制时,开始一个新的cumsum. 达到每个限制后(无论是多少行),都会创建一个包含总 cumsum 的行。
下面我创建了一个执行此操作的函数示例,但速度非常慢,尤其是当数据帧变得非常大时。我不喜欢我的函数是循环的,我正在寻找一种使它更快的方法(我猜是一种没有循环的方法)。
def foo(df, max_value):
last_value = 0
storage = []
for index, row in df.iterrows():
this_value = np.nansum([row[0], last_value])
if this_value >= max_value:
storage.append((index, this_value))
this_value = 0
last_value = this_value
return storage
如果你喜欢我的函数:foo(df, 5) 在上面的上下文中,它返回:
0
2 10
6 8
一只萌萌小番薯
侃侃尔雅
相关分类