gpt4 book ai didi

python - 如何在 Pandas 中使用滚动不包含最后一个值?

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:19 24 4
gpt4 key购买 nike

我正在尝试获取过去 x 值的滚动平均值。通过查看文档,滚动方法似乎包含最后一个值。

上述行为可以在文档中的以下示例中看到:

In [51]: ser = pd.Series(np.random.randn(10), index=pd.date_range('1/1/2000', periods=10))

In [52]: ser.rolling(window=5, win_type='triang').mean()
Out[52]:
2000-01-01 NaN
2000-01-02 NaN
2000-01-03 NaN
2000-01-04 NaN
2000-01-05 -1.037870
2000-01-06 -0.767705
2000-01-07 -0.383197
2000-01-08 -0.395513
2000-01-09 -0.558440
2000-01-10 -0.672416
Freq: D, dtype: float64

在我的具体情况下,使用 5 作为窗口将采用 2000-01-01 到 2000-01-05 的平均值,并在 2000-01-06 上显示它。

下面是一个比较有代表性的例子:

Team     1994    1995    1996    1997    1998    1999
Team 1 4 1 4 10 2 1
Team 2 2 5 1 2 1 4
Team 3 4 1 7 3 9 4

采用过去 3 个赛季的滚动平均值会像这样:

Team    1994    1995    1996    1997    1998    1999
Team 1 Nan Nan Nan 3.00 5.00 5.33
Team 2 Nan Nan Nan 2.67 2.67 1.33
Team 3 Nan Nan Nan 4.00 3.67 6.33

最佳答案

如果我理解正确,那么:

ser.rolling(window=5, win_type='triang').mean().shift()

应该这样做。


根据您的综合示例

设置数据框

text = """Team     1994    1995    1996    1997    1998    1999
Team 1 4 1 4 10 2 1
Team 2 2 5 1 2 1 4
Team 3 4 1 7 3 9 4"""

df = pd.read_csv(StringIO(text), delimiter='\s{2,}', engine='python', index_col=0)

解决方案

print df.T.rolling(3).mean().shift().T

1994 1995 1996 1997 1998 1999
Team
Team 1 NaN NaN NaN 3.000000 5.000000 5.333333
Team 2 NaN NaN NaN 2.666667 2.666667 1.333333
Team 3 NaN NaN NaN 4.000000 3.666667 6.333333

关于python - 如何在 Pandas 中使用滚动不包含最后一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37373055/

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