1. 程式人生 > >Python簡單實現計算當前單元格的前幾行之和

Python簡單實現計算當前單元格的前幾行之和

想去實現計算當前單元格當前位置前一列的前幾行之和,cvalue列為要計算的資料,new為目標列、新生成
資料格式如下:
cvaluenew
55
510
2030
535
540
545
550
555
以目前水平能想到的只能是按需求直接計算,原理同斐波那契數列大笑
#-*-coding:utf-8-*-
import pandas as pddata=pd.read_excel(path)
data['new']=0c=data['cvalue']
n=data['new']
n[0],n[1]=c[0],n[0]+c[1]
a=1while a<len(n):
    n[a] = n[a - 1] + c[a]
    a += 1
不過實際資料量37萬行,上面的程式連結果都輸出不了
於是函式里加了個yield關鍵字
while a < len(n):
    yield n[a - 1]
    n[a] = n[a - 1] + c[a]
    a += 1
程式碼執行用了3微秒,不過返回了生成器,用了list和for遍歷,居然用了一個小時可憐,效率都很低,看到的朋友有什麼好的辦法指點下不疑問