如何用xarray计算跨整点的30分钟时间平均值
实现跨整点30分钟时间序列平均的简洁方案
可以通过时间偏移+分组聚合的方式快速实现需求,核心思路是将每个数据点映射到其所属的目标整点窗口,再按窗口分组求平均:
步骤1:生成窗口标签
给每个时间点加上15分钟后向下取整到小时,得到该数据点所属的整点窗口标签。例如:
- 12:45 +15分钟 =13:00 → 窗口标签为13:00(对应窗口12:45-13:15)
- 13:15 +15分钟 =13:30 → 窗口标签为13:00(包含在12:45-13:15窗口内)
步骤2:分组求平均
用生成的窗口标签对DataArray进行分组,再计算每组的平均值。
完整代码如下:
import numpy as np import pandas as pd import xarray as xr # 生成示例数据 time = pd.date_range(start='2022-05-11 00:00:00', end='2022-05-11 23:15:00', freq='2min') random_data = np.random.randint(100, size=len(time)) data_array = xr.DataArray(data=random_data, coords={'time': time}) # 生成窗口标签:每个时间点加15分钟后取整点 window_labels = (data_array.time + pd.Timedelta(minutes=15)).dt.floor('H') # 按窗口标签分组求平均 hourly_avg = data_array.groupby(window_labels).mean() # 查看结果 print(hourly_avg)
方案优势
- 无需手动筛选间隔bin,直接通过时间偏移自动匹配正确窗口,逻辑清晰不易出错
- 代码简洁易复用,仅需两行核心代码即可实现需求
- 结果的时间坐标直接对应目标整点,符合业务语义
内容的提问来源于stack exchange,提问作者mariandob
相关产品推荐
相关产品推荐

