本人今天遇到遇到一個任務,計算同月份合約當天各合約總持倉量的移動平均值。立刻寫下了這個函數:
group = df.groupby(['合約系列','date'])
f = pd.DataFrame(group['持倉量'].sum().rolling(20).mean())
上交后,提出要求,不行,這個數據不行,存在一些數據,因為不足20天,導致結果為NAN。一開始沒想到思路,然后就問問群里的大佬,大佬給的第一個建議,寫個功能函數。但是因為數據比較復雜,非連續數據,光是分類就很難,就繼續詢問。
知道一位大佬給了個答案:
group = df.groupby(['合約系列','date'])
f = pd.DataFrame(group['持倉量'].sum().rolling(20,min_periods = 1).mean())
min_periods:#表示窗口最少包含的觀測值為1
意味著數據不滿20天的,自動有一天算一天,計算均值。如第19天數據,此時顯示的結果就是前面19天的均值。