[英]Get mean of last N weekdays for pandas dataframe
假設我的數據是每日計數,並將DateTimeIndex列作為其索引。 有沒有辦法獲得過去n個工作日的平均值? 例如,如果日期是8月15日星期日,我想得到統計數字(星期日8月8日,星期日8月1日,......)。
我昨天開始使用大熊貓,所以這就是我的強奸。
# df is a dataframe with an DateTimeIndex
# brute force for count last n weekdays, wherelnwd = last n weekdays
def lnwd(n=1):
lnwd, tmp = df.shift(7), df.shift(7) # count last weekday
for i in xrange(n-1):
tmp = tmp.shift(7)
lnwd += tmp
lnwd = lnwd/n # average
return lnwd
必須有一個班輪? 有沒有辦法使用apply()
(不傳遞具有for循環的函數?因為n
是可變的)或某種形式的groupby
? 例如,在每個工作日查找所有數據的平均值的方法是:
df.groupby(lambda x: x.dayofweek).mean() # mean of each MTWHFSS
我認為你正在尋找滾動申請(在這種情況下滾動均值)? 請參閱文檔: http : //pandas.pydata.org/pandas-docs/stable/computation.html#moving-rolling-statistics-moments 。 但隨后在每個工作日分別申請,這可以通過將rolling_mean
與工作日的分組與groupby
相結合來實現。
這應該給某些東西(有系列s
):
s.groupby(s.index.weekday).transform(lambda x: pd.rolling_mean(x, window=n))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.