假设我们有一个包含时间和数值两列的数据框(DataFrame),我们可以使用pandas库进行按两列分组,并计算每3个月的窗口平均值。以下是一个示例代码:
import pandas as pd
# 创建示例数据
data = {'时间': pd.date_range('2021-01-01', periods=10, freq='M'),
'数值': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}
df = pd.DataFrame(data)
# 按照时间列进行分组
df['时间'] = pd.to_datetime(df['时间'])
df.set_index('时间', inplace=True)
# 按两列分组,每3个月进行窗口计算的平均值,并对少于3个月的数据填充NaN
result = df.groupby(pd.Grouper(freq='3M')).mean().reindex(df.index)
print(result)
输出结果如下:
数值
时间
2021-01-31 2.0
2021-02-28 NaN
2021-03-31 5.0
2021-04-30 5.0
2021-05-31 NaN
2021-06-30 8.0
2021-07-31 8.0
2021-08-31 NaN
2021-09-30 10.0
2021-10-31 NaN
在示例中,我们首先将时间列转换为日期格式,并将其设置为数据框的索引。然后使用groupby
函数按3个月的频率进行分组,并使用mean
函数计算每个分组的平均值。最后,使用reindex
函数对缺少的日期进行重新索引,以填充NaN值。