gpt4 book ai didi

python - 获取 pandas 数据框的最后 N 个工作日的平均值

转载 作者:太空狗 更新时间:2023-10-30 03:01:21 27 4
gpt4 key购买 nike

假设我的数据是每日计数,并且有一个 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

最佳答案

我认为您正在寻找滚动申请(在本例中为滚动平均值)?请参阅文档: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))

关于python - 获取 pandas 数据框的最后 N 个工作日的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25694612/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com