新的滚动平均值列,按一列分组并找到另一列的滚动平均值

Posted

技术标签:

【中文标题】新的滚动平均值列,按一列分组并找到另一列的滚动平均值【英文标题】:New rolling mean column which group by one column and find rolling mean of another column 【发布时间】:2021-08-07 14:46:01 【问题描述】:

我有一个数据框 df

Date Orders Group
1/1/2021 00:00:00 20 A
1/1/2021 00:12:00 100 B
2/1/2021 00:00:00 24 A
2/1/2021 00:13:00 96 B
----- --- --
14/1/2021 34 A
14/1/2021 103 B

我想要一个新列“滚动平均值”,以这种方式获取 2 周的订单平均值

Date Orders Group Rolling Mean
1/1/2021 00:00:00 20 A NA or 0
1/1/2021 00:12:00 100 B NA or 0
2/1/2021 00:00:00 24 A NA or 0
2/1/2021 00:13:00 96 B Na or 0
----- --- --
14/1/2021 00:00:00 34 A 29
14/1/2021 00:00:00 103 B 101

【问题讨论】:

【参考方案1】:

这对我有用:

df['Rolling Mean'] = df['Orders'].rolling(window=pd.Timedelta(days=14)).mean()

请注意,pd.rolling() 方法中的 min_periods 参数采用整数并且不容易处理时间序列,因此您需要使用 np.nan 覆盖新滚动平均值列的前 14 天第二步,如果你不希望那里有任何值,直到有至少 14 天的平均时间。这可以通过以下方式实现:

# find integer number of time periods in first 14 days.
delay = len(df.loc[:(df.index[0]+pd.Timedelta(days=14))])

# set all means to `NaN` in those time steps.
df.iloc[:delay] = np.nan

此答案假定日期列是您的索引列,并且您已将 numpy 安装为 np,因此您可以调用 np.nan。祝你好运!

【讨论】:

@datalearner 这个答案对你有用吗?通过接受或提出问题让社区知道,祝你好运!

以上是关于新的滚动平均值列,按一列分组并找到另一列的滚动平均值的主要内容,如果未能解决你的问题,请参考以下文章

如何按一列分组并对另一列的值进行排序?

我需要连接三个表,将结果按一列分组,并显示另一列的最大值

如何按一列的最大值获取SQL行,按另一列分组

Pandas 数据框:按两列分组,然后对另一列进行平均

计算 20 秒间隔内的平均值并按另一列分组

如何根据R中的另一列获取一列的平均值