xarray重采样冬季逐6小时数据为日数据时,如何仅保留冬季月份?
只保留重采样后冬季日尺度数据的两种方法
你遇到的问题是因为resample会自动生成时间序列起始到结束的完整日期区间,哪怕原数据只有冬季时次,也会补全其他季节的日期并填充缺失值。解决方法很简单,有两种常见思路:
方法1:重采样后筛选冬季月份
先完成日尺度重采样,再直接过滤出冬季的日期:
# 生成日均值数据集 ds_daily = ds.resample(time='D').mean(dim='time') # 筛选冬季月份(这里以12、1、2月为例,根据你的冬季定义调整月份) ds_daily_winter = ds_daily.sel(time=ds_daily.time.dt.month.isin([12, 1, 2]))
方法2:先筛选冬季时次再重采样(更高效)
先从原始数据里过滤出冬季的逐6小时时次,再做重采样,这样resample只会生成冬季的日期,完全不会出现其他季节的缺失值:
# 先筛选原始数据中的冬季时次 ds_winter_subset = ds.sel(time=ds.time.dt.month.isin([12, 1, 2])) # 再重采样为日均值 ds_daily_winter = ds_winter_subset.resample(time='D').mean(dim='time')
注意:根据你所在地区对冬季的定义,调整isin([12,1,2])里的月份数字即可,比如部分地区冬季是11、12、1月,就改成[11,12,1]。
内容的提问来源于stack exchange,提问作者peteron30
相关产品推荐
相关产品推荐

