【发布时间】:2014-10-30 22:08:49
【问题描述】:
假设我的数据是每日计数,并将 DateTimeIndex 列作为其索引。有没有办法获得过去 n 个工作日的平均值?例如,如果日期是 8 月 15 日星期日,我想获得计数的平均值(8 月 8 日星期日,8 月 1 日星期日,...)。
我昨天开始使用 pandas,所以这是我蛮力强迫的。
# 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
【问题讨论】:
-
DateTimeIndex 有一个 weekofyear 方法。见pandas.pydata.org/pandas-docs/version/0.13.1/generated/…
标签: python pandas time-series