我有一个包含A列和B列的数据框。 期望的结果: 如果B的cumsum达到值> = 15,则应计算0和cumsum> = 15之间的行的以下操作:df [" Amean"] = df [" A" ] .mean()和df [" Bsum15"] = df [" B"]。sum(); 然后再次将cumsum重置为0并继续循环。
答案 0 :(得分:0)
让我们说,我们采取一个更简单的例子
df=pd.DataFrame([1,2,3,4,5,6,7,8,9,10],columns=['B'])
def accum(vals):
acc=0
for i in vals:
acc+=i
if acc>=15:
yield acc
acc=0
else:
yield np.nan
df['accu']=list(accum(df['B'].values))
返回
B accu
0 1 NaN
1 2 NaN
2 3 NaN
3 4 NaN
4 5 15.0
5 6 NaN
6 7 NaN
7 8 21.0
8 9 NaN
9 10 19.0