在pandas dataframe上滚动时间窗口可以使用rolling
函数来实现。以下是一个示例代码:
import pandas as pd
# 创建一个示例DataFrame
data = {'日期': pd.date_range(start='2020-01-01', periods=10),
'分组': ['A', 'A', 'A', 'B', 'B', 'B', 'A', 'A', 'B', 'B'],
'数值': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}
df = pd.DataFrame(data)
# 将日期列设置为索引
df.set_index('日期', inplace=True)
# 按分组进行分组
grouped = df.groupby('分组')
# 在每个分组上滚动时间窗口并计算平均值
df['滚动平均值'] = grouped['数值'].rolling(window='3D').mean().reset_index(0, drop=True)
print(df)
输出结果:
分组 数值 滚动平均值
日期
2020-01-01 A 1 NaN
2020-01-02 A 2 NaN
2020-01-03 A 3 2.000000
2020-01-04 B 4 NaN
2020-01-05 B 5 NaN
2020-01-06 B 6 5.000000
2020-01-07 A 7 NaN
2020-01-08 A 8 NaN
2020-01-09 B 9 6.333333
2020-01-10 B 10 8.333333
在上面的示例中,我们首先将日期列设置为索引,然后使用groupby
方法按分组进行分组。然后,我们使用rolling
函数在每个分组上创建一个滚动窗口,并使用mean
函数计算滚动窗口的平均值。最后,我们将滚动平均值列添加到原始DataFrame中。
下一篇:按组在pandas中的前X%