首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用另一列的滚动均值创建新列-- Python

如何用另一列的滚动均值创建新列-- Python
EN

Stack Overflow用户
提问于 2019-11-16 09:43:53
回答 1查看 63关注 0票数 5

我有一个数据框架:

代码语言:javascript
复制
import pandas as pd
import numpy as np
d1 = {'id': [11, 11,11,11,11,24,24,24,24,24,24], 
     'PT': [3, 3,6,0,9,4,2,3,4,5,0], 
      "date":["2010-10-10","2010-10-12","2010-10-16","2010-10-18","2010-10-22","2010-10-10","2010-10-11","2010-10-14","2010-10-16","2010-10-19","2010-10-22"], 
        }

df1 = pd.DataFrame(data=d1)

    id  PT  date
0   11  3   2010-10-10
1   11  3   2010-10-12
2   11  6   2010-10-16
3   11  0   2010-10-18
4   11  9   2010-10-22
5   24  4   2010-10-10
6   24  2   2010-10-11
7   24  3   2010-10-14
8   24  4   2010-10-16
9   24  5   2010-10-19
10  24  0   2010-10-22

我想要计算每个id的列id在最后3个条目的移动窗口上的滚动平均值。此外,如果该id还没有3个条目,我希望获得最后2个条目或当前条目的平均值。结果应该如下所示:

代码语言:javascript
复制
id  PT  date    Rolling mean last 3
0   11  3   2010-10-10  3
1   11  3   2010-10-12  3
2   11  6   2010-10-16  4
3   11  0   2010-10-18  3
4   11  9   2010-10-22  5
5   24  4   2010-10-10  4
6   24  2   2010-10-11  3
7   24  3   2010-10-14  3
8   24  4   2010-10-16  3
9   24  5   2010-10-19  4
10  24  0   2010-10-22  3

我尝试并获得了:

代码语言:javascript
复制
df1["rolling"]=df1.groupby('id')['PT'].rolling(3).mean().reset_index(0,drop=True)
    id  PT  date    rolling
0   11  3   2010-10-10  NaN
1   11  3   2010-10-12  NaN
2   11  6   2010-10-16  4.0
3   11  0   2010-10-18  3.0
4   11  9   2010-10-22  5.0
5   24  4   2010-10-10  NaN
6   24  2   2010-10-11  NaN
7   24  3   2010-10-14  3.0
8   24  4   2010-10-16  3.0
9   24  5   2010-10-19  4.0
10  24  0   2010-10-22  3.0

因此,我的问题是当没有3个条目时…我有NaN,而不是前两个或当前的条目。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-16 10:05:08

您可能正在寻找min_periods参数:

代码语言:javascript
复制
df1['rolling'] = df1.groupby('id')['PT'].rolling(window=3, min_periods=1).mean().reset_index(0, drop=True)



   id  PT        date  rolling
0   11   3  2010-10-10      3.0
1   11   3  2010-10-12      3.0
2   11   6  2010-10-16      4.0
3   11   0  2010-10-18      3.0
4   11   9  2010-10-22      5.0
5   24   4  2010-10-10      4.0
6   24   2  2010-10-11      3.0
7   24   3  2010-10-14      3.0
8   24   4  2010-10-16      3.0
9   24   5  2010-10-19      4.0
10  24   0  2010-10-22      3.0
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58886791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档