簡體   English   中英

獲取pandas數據幀的最后N個工作日的平均值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM